架构:
HA的配置
选择在hadoop01上配置yarn的HA:
[root@hadoop01 ~]# vi /usr/local/hadoop-2.7.6/etc/hadoop/yarn-site.xml
<!--将如下的覆盖yarn-site.xml文件-->
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle<alue>
</property>
<!--是否开启rm的HA,默认是false-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!--rm集群的标识-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yarnHA</value>
</property>
<!--yarn集群中的rm的列表(标识),多个逗号分开-->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!--指定rm1的主机名-->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop01</value>
</property>
<!--指定rm2的主机名-->
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop02</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>hadoop01:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>hadoop02:8088</value>
</property>
<!--指定外部的zookeeper集群地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>zk1:2181,zk2:2181,zk3:2181<alue>
</property>
</configuration>
远程分发
将hadoop的yarn-site.xml远程分发到hadoop02\hadoop03上的服务器中
[root@hadoop01 ~]# scp /usr/local/hadoop-2.7.6/etc/hadoop/yarn-site.xml hadoop02:/usr/local/hadoop-2.7.6/etc/hadoop/
[root@hadoop01 ~]# scp /usr/local/hadoop-2.7.6/etc/hadoop/yarn-site.xml hadoop03:/usr/local/hadoop-2.7.6/etc/hadoop/
启动HA
手动启动两个RM服务即可。因为RM的HA服务不会自动启动。一般第二个RM服务需要单独手动启动。
[root@hadoop02 hadoop-2.7.6]# yarn-daemon.sh start resourcemanager
验证HA
#jps查看两个进程
[root@hadoop01 ~]# jps
7061 NodeManager
6294 NameNode
6454 DataNode
6936 ResourceManager
6685 SecondaryNameNode
7406 JobHistoryServer
24862 Jps
[root@hadoop02 hadoop-2.7.6]# jps
6772 ResourceManager
#访问两个rm的web ui
http://hadoop01:8088/cluster/cluster
http://hadoop02:8088/cluster/cluster
#验证HA的自动切换功能
1、先启动一个job
[root@hadoop01 ~]# yarn jar /usr/local/hadoop-2.7.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount /meta.xml /out/00
2、启动之后立马将hadoop01的rm给kill,判断作业是否正常执行,如果正常执行rm的HA的是okay;如果失败,rm的HA自动切换功能失败。
注意:
有可能访问hadoop02的rm的web ui总是会自动跳转到hadoop01,这种情况几乎没有问题。
yarn HA命令
#查看rm的状态
[root@hadoop01 ~]# yarn rmadmin -getServiceState rm1
active
[root@hadoop01 ~]# yarn rmadmin -getServiceState rm2
standby
#转义状态
[root@hadoop01 ~]# yarn rmadmin -transitionToStandby rm1