Hadoop集群HDFS、YARN高可用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
  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北慕辰

你的鼓励是小北最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值