
# ResourceManager持续主备倒换
#### 问题
RM（ResourceManager）在多个任务（比如2000个任务）正常并发运行时出现持续的主备倒换，导致YARN服务不可用。
#### 回答
产生上述问题的原因是，full GC（GarbageCollection）时间过长，超出了RM与ZK（ZooKeeper）之间定期交互时长的阈值，导致RM与ZooKeeper失联，从而造成RM主备倒换。
在多任务情况下，RM需要保存多个任务的鉴权信息，并通过心跳传递给各个NM（NodeManager），即心跳Response。心跳Response的生命周期短，默认值为1s，一般可以在JVM minor GC时被回收，但在多任务的情况下，集群规模较大，比如5000节点，多个节点的心跳Response会占用大量内存，导致JVM在minor GC时无法完全回收，无法回收的内存持续累积，最终触发JVM的full GC。JVM的GC都是阻塞式的，即在GC过程中不执行任何作业，所以如果full GC的时间过长，超出了RM与ZooKeeper之间定期交互时长的阈值，就会出现主备倒换。
可以参考以下操作进行处理：
1. 登录FusionInsight Manager。 
   登录集群Manager具体操作，请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
   
   
2. 选择"集群 \> 服务 \> Yarn \> 配置 \> 全部配置"。
3. 搜索"yarn.yarn-site.customized.configs"参数，并添加以下名称和取值，来增大RM与ZooKeeper之间定期交互时长的阈值。 
   - 名称：yarn.resourcemanager.zk-timeout-ms
   
   - 值：根据实际需要配置，取值范围小于等于90000毫秒。
   
   
   
   
4. 保存修改的配置。保存完成后请重新启动配置过期的服务或实例以使配置生效。
 
