1. 前置
YARN可以通过相关配置支持ResourceManager重启过程中,不影响正在运行的作业,即重启后,作业还能正常继续运行直到结束。
参见详细文档ResourceManagerRestart
涉及配置如下:
key | value | 备注 |
---|---|---|
yarn.resourcemanager.recovery.enabled | true | |
yarn.resourcemanager.store.class | org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore | 有三种StateStore,分别是基于zookeeper, HDFS, leveldb, HA高可用集群必须用ZKRMStateStore |
yarn.resourcemanager.work-preserving-recovery.scheduling-wait-ms | 10000 | 默认10000,用默认值即可 |
备注:
- 开启了Recovery后,ResourceManger会将应用的状态等信息保存到
yarn.resourcemanager.store.class
配置的存储介质中,重启后会load这些信息,并且NodeManger会将还在运行的container信息同步到ResourceManager,整个过程不影响作业的正常运行。 -
yarn.resourcemanager.store.class
支持三种存储介质的配置(HA集群只支持ZKRMStateStore),选择不同的介质,还需要增加相关配置,详见ResourceManagerRestart
存储 | yarn.resourcemanager.store.class |
---|---|
ZooKeeper | org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore |
FileSystem | org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore |
LevelDB | org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore |
2. 测试
下面以HA集群跑Hive作业进行相关测试。
2.1 未开启Recovery
若集群未开启
Recovery功能,则重启ResourceManager的过程中:
- Hive作业会失败
- YARN UI页面的应用信息丢失
重启前UI页面显示Hive作业
重启后UI页面作业信息消失
备注:
即使是HA集群,ResourceManager重启后作业也失败。因为其中一个rm1重启,作业会failover切换到rm2,但是rm2上面没有应用的相关信息,所以会出错。
2.2 开启Recovery
若集群开启了Recovery功能,则ResourceManager重启过程中:
- Hive作业正常运行至结束
- YARN UI的作业信息一直保留存在
3 E-MapReduce中的配置
- E-MapReduce的EMR-3.9.0/EMR-2.9.2 以上(不包含)的版本高可用(HA)集群默认开启
- 老版本的集群用户可以根据上述进行配置即可
欢迎加入E-MapReduce用户群