YARN HA 搭建以及自动故障转移测试

30 篇文章 0 订阅

yarn-site.xml文件配置

<configuration>
<!--指定可以在YARN上运行MapReduce程序-->
    <property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value> 
    </property>
    <!--YARN HA配置-->
     <!--开启ResourceManager HA功能-->
    <property>
    <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
    <!--标志ResourceManager-->
    <property>
    <name>yarn.resourcemanager.cluster-id</name>
        <value>cluster1</value>
    </property>
    <!--集群中ResourceManager的ID列表,后面的配置将引用该ID-->
    <property>
  <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>
   <!--ResourceManager1所在的节点主机名-->
    <property>
  <name>yarn.resourcemanager.hostname.rm1</name>
        <value>centos01</value>
    </property>
   <!--ResourceManager2所在的节点主机名-->
    <property>
  <name>yarn.resourcemanager.hostname.rm2</name>
        <value>centos02</value>
    </property>
   <!--ResourceManager1的Web页面访问地址-->
    <property>
  <name>yarn.resourcemanager.webapp.address.rm1</name>
        <value>centos01:8088</value>
    </property>
   <!--ResourceManager2的Web页面访问地址-->
    <property>
  <name>yarn.resourcemanager.webapp.address.rm2</name>
        <value>centos02:8088</value>
    </property>
    <!--ZooKeeper集群列表-->
    <property>
  <name>yarn.resourcemanager.zk-address</name>
        <value>centos01:2181,centos02:2181,centos03:2181</value>
    </property>
   <!--启用ResouerceManager重启的功能,默认为false-->
    <property>
  <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value>
    </property>
       <!--用于ResouerceManager状态存储的类-->
    <property>
  <name>yarn.resourcemanager.store.class</name>
  <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>
</configuration>

yarn.nodemanager.aux-services:NodeManager上运行的附属服务,需配置成mapreduce_shuffle才可正常运行MapReduce程序。YARN提供了该配置项用于在NodeManager上扩展自定义服务,MapReduce的Shuffle功能正是一种扩展服务。

yarn.resourcemanager.ha.enabled:开启ResourceManager HA功能。

yarn.resourcemanager.cluster-id:标识集群中的ResourceManager。如果设置该属性,需要确保所有的ResourceManager在配置中都有自己的ID。

yarn.resourcemanager.ha.rm-ids:ResourceManager的逻辑ID列表。可以自定义,此处设置为“rm1,rm2”,后面的配置将引用该ID。

yarn.resourcemanager.hostname.rm1:指定ResourceManager对应的主机名。另外,可以设置ResourceManager的每个服务地址。

yarn.resourcemanager.webapp.address.rm1:指定ResourceManager的Web端访问地址。

yarn.resourcemanager.zk-address:指定集成的ZooKeeper的服务地址。

yarn.resourcemanager.recovery.enabled:启用ResourceManager重启的功能。

yarn.resourcemanager.store.class:用于ResourceManager状态存储的类。

同步其他节点

scp -r /opt/modules/hadoop-2.8.2/etc/hadoop hadoop@centos02:/opt/modules/hadoop-2.8.2/etc
scp -r /opt/modules/hadoop-2.8.2/etc/hadoop hadoop@centos03:/opt/modules/hadoop-2.8.2/etc

启动ZooKeeper集群

分别进入每个节点的ZooKeeper安装目录,执行以下命令:

bin/zkServer.sh start

启动YARN集群

分别在centos01centos02节点上进入Hadoop安装目录,执行以下命令,启动resourcemanager

sbin/yarn-daemon.sh start resourcemanager

分别在每个节点上进入Hadoop安装目录,执行以下命令,启动nodemanager

sbin/yarn-daemon.sh start nodemanager

查看各节点的java进程

jps

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

浏览器中查看YARN的启动状态

在浏览器中输入http://centos01:8088:
在这里插入图片描述

如果访问备用ResourceManager地址http://centos02:8088,会发现自动跳转到http://centos01:8088。因为此时活动状态的ResourceManager在centos01节点上,访问备用ResourceManager会自动跳转到活动ResourceManager。

测试YARN自动故障转移

centos01节点上执行MapReduce默认的WordCount程序,当正在执行Map任务时,新开一个SSH Shell窗口,杀掉centos01的ResourceManager进程,观察程序执行过程。若程序仍能流畅执行,说明自动故障转移生效,ResourceManager遇到故障后,自动切换到centos02节点上继续执行。此时访问备用ResourceManager的Web页面地址http://centos02:8088,发现可以成功访问:

启动HDFS

sbin/start-dfs.sh

启动ZKFC守护进程

在节点centos01centos02:

sbin/hadoop-daemon.sh start zkfc

查看各节点的java进程以及NameNode状态

尤其要记住centos01中的ResourceManager节点进程,因为我们一会要杀掉他做测试
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

开始测试

先准备好数据:

在这里插入图片描述

运行MapReduce之WordCount单词计数程序:

hadoop jar /opt/modules/hadoop-2.8.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.2.jar wordcount /input /output

在程序执行到map任务时在centos02通过ssh登录centos01杀掉centos01的ResourceManager:
在这里插入图片描述
在这里插入图片描述

此时再在浏览器中查看YARN的状态,发现http://centos01:8088已经无法访问,但是http://centos02:8088可以访问并且可以看到MapReduce任务:
在这里插入图片描述

在这里插入图片描述

查看MapReduce结果

hadoop fs -cat /output/*

在这里插入图片描述

发现MapReduce仍然成功执行了,说明YARN HA搭建成功并且可以进行故障转移。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop High Availability (HA) 集群是为了提高Apache Hadoop集群的可靠性和可用性而设计的一种架构。它通过将关键服务(如NameNode和JobTracker)冗余部署,并在主节点故障自动切换到备用节点,保证了数据处理任务的持续进行。下面是Hadoop HA集群搭建的基本步骤: 1. **安装并配置Hadoop**: - 安装Hadoop到两个或更多节点上,每个节点都是一个独立的Hadoop集群实例。 - 配置`core-site.xml`和`hdfs-site.xml`文件,设置集群的名称节点(NameNode)和数据节点(DataNodes)。 2. **启用HDFS HA**: - 在`hdfs-site.xml`中,设置`ha.fencing.methods`指定节点之间的心跳检测方法,例如SSH或JMX。 - 创建一个HDFS HA配置文件,如`core-site.xml.template`,并在实际集群中创建对应的配置文件。 3. **配置高可用NameNode**: - 设置`ha.zookeeper.quorum`为ZooKeeper集群地址,用于选举新的Active NameNode。 - 配置`dfs.nameservice.id`定义NameNode服务名。 - 在`hdfs-site.xml`中启用`dfs.ha.namenodes.<nameservice-id>`属性。 4. **设置Secondary NameNode**: - 在`hdfs-site.xml`中启用`dfs.ha.automatic-failover.enabled`,并配置`dfs.ha.automatic-failover.retry-interval`和`dfs.ha.automatic-failover.timeout`。 5. **配置ZooKeeper**: - 如果没有使用ZooKeeper,需要配置一个或多个ZooKeeper服务器作为NameNode服务选举的协调器。 6. **启动HDFS服务**: - 启动HDFS集群,包括两个NameNode(一个为主,一个为备)和足够的DataNodes。 7. **验证集群状态**: 使用`hdfs haadmin`命令检查集群状态、启动/关闭心跳检测和手动触发Failover。 8. **配置YARN HA**: 对于YARN资源管理器,类似地,需要配置ResourceManager HA(RMHA),并设置HA模式。 9. **测试和监控**: 确保服务可用,执行负载测试,并设置监控工具(如Hadoop Metrics2或Ganglia)来监控性能和异常。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值