在执行YARN HA配置之前,可以参考该文章进行HDFS高可用配置。
在经过上面HDFS高可用搭建配置之后,接下来的操作就比较简单了
首先修改master中的yarn-site.xml文件
vi /usr/local/hadoop/etc/hadoop/yarn-site.xml
将configuration里的修改为以下内容
<!-- 指定nodemanajager启动时加载server的方式为shuffle server -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定RM的集群id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>RM_CLUSTER</value>
</property>
<!-- 定义RM的节点 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 指定RM1的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>master</value>
</property>
<!-- 指定RM2的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>slave1</value>
</property>
<!-- 激活RM自动恢复 -->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<!-- 配置RM的状态信息存储方式,有MemStore和ZKStore -->
<property>
<name>yarn.resourcemanager.store.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<!-- 配置为ZooKeeper存储时,指定zookeeper集群的地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
ResourceManager进程需要单独启动。在slave1上执行命令:
yarn-daemon.sh start resourcemanager
使用浏览器访问http://master:8088,单机Cluster菜单下的About,查看ResourceManager的状态为active
在master中通过jps查看resourceManager的进程号,kill -9 进程号 ,再去访问http://slave1:8088查看是否会自动切换
如下图所示,slave1中的ResourceManager已变成active,说明YARN HA集群能正常工作了。