hadoop学习记录
Posted 一加六
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop学习记录相关的知识,希望对你有一定的参考价值。
Hadoop学习
- 虚拟机安装
- Jdk安装
- Hadoop安装和集群配置
- zookeeper安装并配置
- Hadoop模块
- Hadoop集群启动测试
- Hadoop - JavaAPI (with IDEA in Windows)
- HDFS的Checkpoint
- HDFS中的fsck命令(检查数据块是否健康)
- hdfs haadmin 命令
虚拟机安装
第一步:创建新的虚拟机
第二步:选择“自定义向导”
第三步:
第四步:选择操作系统的类型
第五步:安装及位置
第六步:cpu及核心数 建议最少2核
第七步:内存 建议最少4G
第八步:网络类型选择桥接或NAT都可(建议NAT模式)
创建好了虚拟机 图中CPU核心和内存都是为简化流程没有改
安装一台centos7并克隆两台共三台机器
linux网络配置
1.修改主机名称
将克隆的2、3主机分别改名为hadoop02、hadoop03
Vi /etc/hostname
2.主机名和ip映射配置
此处设置IP时注意
Host文件配置 三台虚拟机之间通信名称代替ip
2.网络参数配置 配置静态ip
3.测试网卡配置
若修改vmware默认初始网段,出现无法ping通外网在上图虚拟网络编辑器还原默认配置,使用还原后的网段即可.
SSH服务配置 免密登录
1.生成私匙 和公匙
将共匙 加入authorized_keys 文件(如没有touch创建该文件) 实现自我登录
cat id_rsa.pub >> authorized_keys
复制共匙到hadoop02和hadoop03 实现免密登录
防火墙配置
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --zone=public --add-port=50075/tcp --permanent
firewall-cmd --zone=public --add-port=8088/tcp --permanent
hdfs
9000 50070 50010
yarn
8030 8031 8032 8088
journalnode
8485
zookeeper
2181 2888 3888
放开端口需重载防火墙配置
firewall-cmd --reload
查看一下开放的端口
firewall-cmd --zone=public --list-ports
常用的端口如下
Jdk安装
上传
解压
重命名
配置环境变量
验证安装完成
Hadoop安装和集群配置
上传
解压
配置环境变量
需要注意的是配置环境变量的时候若有两个path 一定要记得两个都要在前面加$符号
验证安装成功
主节点配置
core-site.xml 配置 此地fs需注意value值开头需添加hdfs 非高可用
官网core-default
高可用ha配置
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop/tmp</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>ha001:2181,ha002:2181,ha003:2181</value>
</property>
<!--ipc超时重试次数和间隔-->
<property>
<name>ipc.client.connect.max.retries</name>
<value>100</value>
</property>
<property>
<name>ipc.client.connect.retry.interval</name>
<value>10000</value>
</property>
<property>
<name>ipc.client.connect.timeout</name>
<value>20000</value>
</property>
</configuration>
Hdfs-site.xml文件配置 此处dfs需注意value前无需添加hdfs
官网hdfs-default
高可用ha配置
<?xml version="1.0" encoding="UTF-8"?>href="configuration.xsl"?>
<configuration>
<!--三台节点-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!--元数据信息位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/export/data/hadoop/name</value>
</property>
<!--数据位置-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/export/data/hadoop/data</value>
</property>
<!--开启WEB-HDFS-->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<!--ha集群名称-->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!--两台namenode名称-->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!--nn1的通信地址-->
<!--RPC通信地址-->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>ha001:9000</value>
</property>
<!--http通信地址-->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>ha001:50070</value>
</property>
<!--nn2的通信地址-->
<!--RPC通信地址-->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>ha002:9000</value>
</property>
<!--http通信地址-->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>ha002:50070</value>
</property>
<!--NAMENODE的元数据在journalnode的存放位置-->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://ha001:8485;ha002:8485;ha003:8485/ns1</value>
</property>
<!--指定journal在本地磁盘的存放位置-->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/export/data/hadoop/journaldata</value>
</property>
<!--开启namenode失败自动切换-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--隔离机制自动切换时登录第二台namenode -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
<!--journal连接配置-->
<property>
<name>dfs.qjournal.start-segment.timeout.ms</name>
<value>20000</value>
</property>
<property>
<name>dfs.qjournal.select-input-streams.timeout.ms</name>
<value>20000</value>
</property>
<property>
<name>dfs.qjournal.write-txns.timeout.ms</name>
<value>20000</value>
</property>
</configuration>
Mapred-site.xml文件配置
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>3072</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>6144</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx3072m</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx6144m</value>
</property>
</configuration>
yarn-site.xml文件配置
资源管理器负责配置调控CPU,内存,磁盘等分配和使用
分为节点资源管理和任务资源分配
单节点推荐内存设置如下(主要为系统预留)
每个container则根据任务需要设置最大最小分配资源
<?xml version="1.0"?>
<configuration>
<!--是否将对容器实施物理内存限制-->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>true</value>
</property>
<!--是否将对容器实施虚拟内存限制-->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>true</value>
</property>
<!--物理核心和虚拟核心比率-->
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<!--将逻辑处理器(例如超线程)视为核心-->
<property>
<name>yarn.nodemanager.resource.count-logical-processors-as-cores</name>
<value>false</value>
</property>
<!--scheduler给每个容器可分配资源-->
<!------表示每个container的最大物理内存------->
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>3072</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>256</value>
</property>
<!------表示每个container的最大CPU核心数------->
<property>
<name>yarn.scheduler.maximum-allocation-vcores</name>
<value>3</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-vcores</name>
<value>1</value>
</property>
<!--单个节点可用资源-->
<!------表示该节点可使用的物理内存------->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2400</value>
</property>
<!------表示该节点可使用的CPU核心数------->
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>2</value>
</property>
<!--resourcemanager地址-->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>ha001</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>ha002</value>
</property>
<!--指定zookeeper集群地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>ha001:2181,ha002:2181,ha003:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--开启resourcemanager高可用-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!--指定cluster ID-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
</configuration>
Slaves文件配置
将主节点内容分发到子节点
分发profile配置
同步分发、export下的文件
zookeeper安装并配置
1.下载并解压
配置环境变量
配置zoo.cfg
添加myid文件
Ha-01输入值1,ha-02输入值为2,ha-03输入值为3
Hadoop模块
common 公共模块
HDFS 文件存储
YARN 资源管理
MapReduce 计算框架
Hadoop集群启动测试
1.启动各个节点的z
以上是关于hadoop学习记录的主要内容,如果未能解决你的问题,请参考以下文章