Hadoop集群HDFSYARN高可用HA详细配置步骤说明,附Zookeeper搭建详细步骤建议收藏!!!
Posted 北慕辰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop集群HDFSYARN高可用HA详细配置步骤说明,附Zookeeper搭建详细步骤建议收藏!!!相关的知识,希望对你有一定的参考价值。
💜🧡💛制作不易,各位大佬们给点鼓励!
🧡💛💚点赞👍 ➕ 收藏⭐ ➕ 关注✅
💛💚💙欢迎各位大佬指教,一键三连走起!
一、ZooKeeper搭建
1、上传安装包到master并解压
tar -xvf zookeeper-3.4.6.tar.gz
2、配置环境变量
vim /etc/profile
修改添加配置信息,保存并退出
export ZOOKEEPER_HOME=/usr/local/soft/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin
刷新配置:
source /etc/profile
3、修改zk的配置文件
进入zk的配置文件目录,在zk的home目录下/usr/local/soft/zookeeper/zookeeper-3.4.6/
cd /usr/local/soft/zookeeper/zookeeper-3.4.6/conf
重命名配置文件
cp zoo_sample.cfg zoo.cfg
修改配置文件中信息
dataDir=/usr/local/soft/zookeeper-3.4.6/data
并添加下面配置信息
server.0=master:2888:3888
server.1=node1:2888:3888
server.2=node2:2888:3888
4、新建data目录
进入zk的home目录
cd /usr/local/soft/zookeeper-3.4.6
创建data目录
mkdir data
进入data目录
cd data
新建文件myid
touch myid
5、同步zk的home到其它节点
scp -r zookeeper-3.4.6 node1:`pwd`
scp -r zookeeper-3.4.6 node2:`pwd`
配置node1和node2的环境变量,同上面步骤
在所有节点执行
source /etc/profile
6、编辑/usr/local/soft/zookeeper-3.4.6/data/myid
在master,node1,node2三台机器的myid文件分别加上0,1,2
注意:只要加上数字就可,例如:master的myid中写入0
7、启动zk,
zkServer.sh start 三台都需要执行
zkServer.sh status 查看状态
通过jps可以查看zk的进程:QuorumPeerMain
当有一个leader的时候启动成功
停止zk的方法:
zkServer.sh stop 三台都需要执行
8、连接zk
zkCli.sh
zk 是一个目录结构 ,每个节点可以存数据,同时可以有子节点
9.zk的常用shell命令
创建目录
create /test testData
create /test/a aData
获取数据
get /test
ls /test
delete 只能删除没有子节点的节点
rmr /test 删除节点
10.重置zk
1、杀掉所有zk进程
kiil -9 pid
2、删除data目录下的version文件, 所有节点都要删除
rm -rf /usr/local/soft/zookeeper-3.4.6/data/version-2
2、启动zk
zkServer.sh start
二、HDFS的高可用HA的详细配置
高可用配置各个节点上的进程配置如下:
ZK NN DN RM NM JN ZKFC
master 1 1 1 1 1
node1 1 1 1 1 1 1 1
node2 1 1 1 1
HA详细配置步骤
1、防火墙
service firewalld stop #关闭防火墙
2、设置机器时间同步
yum install ntp
ntpdate -u s2c.time.edu.cn
或者使用:
date -s 20180503
3、免密钥 (远程执行命令)
在两个主节点生成密钥文件
ssh-keygen -t rsa
远程复制到各个节点
ssh-copy-id 各个节点ip
分别从master和node1上复制到三台机器如下
master-->master,node1,node2
node1-->master,node1,node2
4、修改hadoop配置文件
进入hadoo的home中的etc/hadoop/目录
/usr/local/soft/hadoop-2.7.6/etc/hadoop/
目录下
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://cluster</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/soft/hadoop-2.7.6/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,node1:2181,node2:2181</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<!-- 指定hdfs元数据存储的路径 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/soft/hadoop-2.7.6/data/namenode</value>
</property>
<!-- 指定hdfs数据存储的路径 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/soft/hadoop-2.7.6/data/datanode</value>
</property>
<!-- 数据备份的个数 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- 关闭权限验证 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<!-- 开启WebHDFS功能(基于REST的接口服务) -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<!-- //////////////以下为HDFS HA的配置////////////// -->
<!-- 指定hdfs的nameservices名称为mycluster -->
<property>
<name>dfs.nameservices</name>
<value>cluster</value>
</property>
<!-- 指定cluster的两个namenode的名称分别为nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.cluster</name>
<value>nn1,nn2</value>
</property>
<!-- 配置nn1,nn2的rpc通信端口 -->
<property>
<name>dfs.namenode.rpc-address.cluster.nn1</name>
<value>master:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.cluster.nn2</name>
<value>node1:8020</value>
</property>
<!-- 配置nn1,nn2的http通信端口 -->
<property>
<name>dfs.namenode.http-address.cluster.nn1</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.cluster.nn2</name>
<value>node1:50070</value>
</property>
<!-- 指定namenode元数据存储在journalnode中的路径 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;node1:8485;node2:8485/cluster</value>
</property>
<!-- 指定journalnode日志文件存储的路径 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/local/soft/hadoop-2.7.6/data/journal</value>
</property>
<!-- 指定HDFS客户端连接active namenode的java类 -->
<property>
<name>dfs.client.failover.proxy.provider.cluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制为ssh -->
<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.automatic-failover.enabled</name>
<value>true</value>
</property>
</configuration>
停止HDFS集群:stop-dfs.sh
将修改的hadoop配置信息,同步到其它节点node1,noded2
cd /usr/local/soft/hadoop-2.7.6/etc/hadoop #进入该目录下,scp到各节点
scp ./* node1:`pwd`
scp ./* node2:`pwd`
5、删除hadoop数据存储目录下的文件 每个节点都需要删除
rm -rf /usr/local/soft/hadoop-2.7.6/tmp
6、启动zookeeper 三台都需要启动
zkServer.sh start
zkServer.sh status
7、启动JN 存储hdfs元数据
三台JN上执行 启动命令:
进入hadoop的sbin目录执行hadoop-daemon.sh
/usr/local/soft/hadoop-2.7.6/sbin/hadoop-daemon.sh start journalnode
8、格式化 在一台NN上执行,这里选择master
hdfs namenode -format
启动当前的NN
hadoop-daemon.sh start namenode
9、执行同步 没有格式化的NN上执行 在另外一个namenode上面执行 这里选择node1
/usr/local/soft/hadoop-2.7.6/bin/hdfs namenode -bootstrapStandby
10、格式化ZK 在master上面执行
注意!!一定要先 把zk集群正常 启动起来
/usr/local/soft/hadoop-2.7.6/bin/hdfs zkfc -formatZK
11、启动hdfs集群,在master上执行
start-dfs.sh
三、YARN高可用HA搭建
1、修改配置文件
yarn-site.xml
<configuration>
<!-- NodeManager上运行的附属服务,需配置成mapreduce_shuffle才可运行MapReduce程序 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 开启日志 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 配置日志删除时间为7天,-1为禁用,单位为秒 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<!-- //////////////以下为YARN HA的配置////////////// -->
<!-- 开启YARN HA -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 启用自动故障转移 -->
<property>
<name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 指定YARN HA的名称 -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yarncluster</value>
</property>
<!-- 指定两个resourcemanager的名称 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 配置rm1,rm2的主机 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>node1</value>
</property>
<!-- 配置YARN的http端口 -->
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>node1:8088</value>
</property>
<!-- 配置zookeeper的地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>master:2181,node1:2181,node2:2181</value>
</property>
<!-- 配置zookeeper的存储位置 -->
<property>
<name>yarn.resourcemanager.zk-state-store.parent-path</name>
<value>/rmstore</value>
</property>
<!-- 开启yarn resourcemanager restart -->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<!-- 配置resourcemanager的状态存储到zookeeper中 -->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<!-- 开启yarn nodemanager restart -->
<property>
<name>yarn.nodemanager.recovery.enabled</name>
<value>true</value>
</property>
<!-- 配置nodemanager IPC的通信端口 -->
<property>
<name>yarn.nodemanager.address</name>
<value>0.0.0.0:45454</value>
</property>
</configuration>
停止yarn集群: stop-yarn.sh
修改的配置信息,同步到其它节点
cd /usr/local/soft/hadoop-2.7.6/etc/hadoop
scp ./* node1:`pwd`
scp ./* node2:`pwd`
2、启动yarn 在master启动
start-yarn.sh
3、在node1上启动另一个RM
/usr/local/soft/hadoop-2.7.6/sbin/yarn-daemon.sh start resourcemanager
最后可以进入到web页面查看
master:8088
node1:8088
以上是关于Hadoop集群HDFSYARN高可用HA详细配置步骤说明,附Zookeeper搭建详细步骤建议收藏!!!的主要内容,如果未能解决你的问题,请参考以下文章