Hadoop MapReduce HA搭建

本文介绍如何在Hadoop集群中实现YARN ResourceManager的高可用性部署,包括规划、配置文件调整、集群启动及验证过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MRAppMaster中如果ResourceManager 宕机了怎么办,与hadoop中的namenode问题一样,同样可以将
RM搭建高可用。

1、规划

准备四台虚拟机,规划如下

主机node2node3node4node5
节点NameNodeNameNode
节点DataNodeDataNodeDataNode
节点ZooKeperZooKeperZooKeper
节点ZKFCZKFC
节点JournalNodeJournalNodeJournalNode
节点Resource Manager1Resource Manager2
节点Node Manager1Node Manager2Node Manager3

hadoop基于zookeper自动高可用搭建
中已经搭建好了namdenode的高可用,所以本实例在其基础上再搭建即可,可以看到只需要在配置
Resource Manager1,Resource Manager2即可,Node Manager1无需配置,其配置同DataNode配置,在slaves配置文件中。

2、配置文件

2.1 mapred-site.xml

进入到hadoop配置文件目录下 生成mapred-site.xml文件

cd $HADOOP_HOME/etc/hadoop
cp mapred-site.xml.template  mapred-site.xml
vim  mapred-site.xml

增加如下配置

<property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
</property>

在这里插入图片描述

2.2 yarn-site.xml

在进入到hadoop配置文件目录下 ,yarn-site.xml中添加如下内容

<!-- 让yarn的容器支持mapreduce的洗牌,开启shuffle服务 -->
<property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
</property>
<!-- 启用resourcemanager的HA -->
<property>
   <name>yarn.resourcemanager.ha.enabled</name>
   <value>true</value>
 </property>
<!-- 给两个resourcemanager组成的HA命名 -->
 <property>
   <name>yarn.resourcemanager.cluster-id</name>
   <value>cluster1</value>
 </property>
<!-- RM HA的两个resourcemanager的名字 -->
 <property>
   <name>yarn.resourcemanager.ha.rm-ids</name>
   <value>rm1,rm2</value>
 </property>
<!-- 指定rm1的reourcemanager进程所在的主机名称 -->
 <property>
   <name>yarn.resourcemanager.hostname.rm1</name>
   <value>node4</value>
 </property>
<!-- 指定rm2的reourcemanager进程所在的主机名称 -->
 <property>
   <name>yarn.resourcemanager.hostname.rm2</name>
   <value>node5</value>
 </property>
<!-- 指定zookeeper集群的各个节点地址和端口号 -->
 <property>
   <name>yarn.resourcemanager.zk-address</name>
   <value>node3:2181,node4:2181,node5:2181</value>
 </property>

2.3 把配置文件传到 其他服务器上

本实例在node2上修改了 yarn-site.xml, mapred-site.xml,将hadoop所有配置文件都传到其他服务器上,以达到共享

 scp * node3:`pwd` && scp * node4:`pwd` && scp * node5:`pwd`

2.4 修改启动文件

先启动yarn 再启动rm

 start-yarn.sh
 yarn-daemon.sh start resourcemanager 

新增hdfs集群 start_hdfs_ha.sh启动文件,在home目录下

vim   start_hdfs_ha.sh

添加如下内容,实现一键启动

#!/bin/bash
for node in node3 node4 node5
do
  ssh $node "source /etc/profile; zkServer.sh start"
done

sleep 1
start-dfs.sh

ssh node4 "source /etc/profile; start-yarn.sh"
ssh node5 "source /etc/profile; yarn-daemon.sh start resourcemanager"

echo "-----------node2-jps----------- "
jps
for node in node3 node4 node5
do
echo "-----------$node-jps----------- "
 ssh $node "source /etc/profile; jps"
done

再添加一键停服务脚本

#!/bin/bash
ssh node4 ". /etc/profile; stop-yarn.sh"
ssh node3 ". /etc/profile; yarn-daemon.sh stop resourcemanager"

stop-dfs.sh
sleep 1

for node in node3 node4 node5

do
  ssh $node "source /etc/profile; zkServer.sh stop"
done

echo "-----------node2-jps----------- "
jps

for node in node3 node4 node5
do
echo "-----------$node-jps----------- "
 ssh $node "source /etc/profile; jps"

done

将启动和命令 传到其他服务器node[3-5]上

scp start_hdfs_ha.sh  node3:`pwd` && scp start_hdfs_ha.sh  node4:`pwd` && scp start_hdfs_ha.sh  node5:`pwd`
scp stop_hdfs_ha.sh  node3:`pwd` && scp stop_hdfs_ha.sh  node4:`pwd` && scp stop_hdfs_ha.sh  node5:`pwd`

3、启动集群

任意一台服务器执行

./start_hdfs_ha.sh  
启动后可以看到 node4 和node5上有resourcemanager进程以及nodemanager进程

在这里插入图片描述

4、验证

4.1 页面验证

RM的默认端口为8088,浏览器输入node4:8088.看到node4的resourcemanager处于active状态
在这里插入图片描述
http://node5:8088/
在这里插入图片描述
输入node5:8088后出现上述页面后会自动调转到node4:8088,是由于node5处于standby状态。
http://node5:8088/

4.2 高可用验证

在node4上看到rm的进程为 1842
在这里插入图片描述
kill 掉rm进程模拟宕机

kill -9 1842
jps

在这里插入图片描述
然后
再刷新node5:8088

看到node5上的rm自动切换为active
在这里插入图片描述
然后在启动node4上的rm。

yarn-daemon.sh start resourcemanager
jps

在这里插入图片描述
启动后,再刷新node4:8088 看到 node4启动rm后rm为standby状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

菜菜的中年程序猿

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值