Yarn-RM-HA配置文件添加
下面说明是基于之前基本环境(yarn)已经基本完成搭建后继续学习
高可用性功能以Active / Standby ResourceManager对的形式添加冗余,以消除此单点故障。
ZooKeepr能够为我们保证最终只有一个ResourceManager能够创建成功。创建成功的那个ResourceManager就切换为Active状态,没有成功的那些ResourceManager则切换为Standby状态
结构
RM故障转移
ResourceManager HA通过主动/备用架构实现 - 在任何时间点,只有一个RM处于活动状态,并且一个或多个RM处于备用模式,等待接管活动状态。在启用自动故障切换时,支持从管理命令(通过CLI)或通过集成故障切换控制器进行触发。
Yarn-HA配置文件添加
yarn-site.xml 配置文件添加如下内容,前提是之前的一些参数已经配置好了
1. 新添加HA内容
先在主节点进行修改,然后分发到其他所有yarn节点。
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster1</value>
</property>
<!-- List of logical IDs for the RMs. e.g., “rm1,rm2”.-->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- For each rm-id, specify the hostname the RM corresponds to. Alternately, one could set each of the RM’s service addresses..-->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>node102</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>node103</value>
</property>
<!-- For each rm-id, specify host:port of the RM web application corresponds to. You do not need this if you set yarn.http.policy to HTTPS_ONLY. If set, overrides the hostname set in yarn.resourcemanager.hostname.rm-id.-->
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>node102:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>node103:8088</value>
</property>
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<property>
<name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.ha.automatic-failover.embedded</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>node102:2181,node103:2181,node104:2181</value>
</property>
配置参数的简单解释:
yarn.resourcemanager.ha.enabled : 启用 RM HA
yarn.resourcemanager.cluster-id : 标识集群中的RM
yarn.resourcemanager.ha.rm-ids : RM 逻辑IDs的名称
yarn.resourcemanager.hostname.rm1: 对于每个rm-id,指定RM对应的主机名。或者,可以设置RM的每个服务地址。
yarn.resourcemanager.webapp.address.rm1: 对于每个rm-id,指定RM Web应用程序对应的主机:端口
yarn.resourcemanager.recovery.enabled: 启用RM重启的功能。RM重启,作业保留机制 job不会失败。设置为true则必须配置yarn.resourcemanager.store.class
yarn.resourcemanager.store.class : 有三种StateStore,分别是基于zookeeper, HDFS, leveldb, HA高可用集群必须用ZKRMStateStore
yarn.resourcemanager.ha.automatic-failover.enabled : 自动故障转移。默认情况下,在启用 HA 时,启用自动故障转移
yarn.resourcemanager.ha.automatic-failover.embedded : 自动故障转移时是否使用内嵌的Leader选举策略选举 Active RM。缺省情况下,它只会在启用HA配置的情况下生效。
yarn.resourcemanager.zk-address : zookeeper 节点
启动服务
把yarn-site.xml发送覆盖到其他yarn节点
在主节点node102启动yarn
./sbin/start-yarn.sh
再从node103启动resourcemanager服务
./sbin/yarn-daemon.sh start resourcemanager
查看服务启动 jps
node102和node103都会有resourcemanager进程和Nodemanager进程
检查主从状态
./bin/yarn rmadmin -getServiceState rm1
./bin/yarn rmadmin -getServiceState rm2
主动切换状态
./bin/yarn rmadmin -transitionToActive --forcemanual rm1
测试:
可以跑一个pi进程 100 1000
在测试过程中,认为kill active的resourcemanager,查看最终运行进程正常完成