更新时间:2025-07-14 GMT+08:00
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之间定期交互时长的阈值,就会出现主备倒换。
可以参考以下操作进行处理:
- 登录FusionInsight Manager。
登录集群Manager具体操作,请参考访问MRS集群Manager。
- 选择“集群 > 服务 > Yarn > 配置 > 全部配置”。
- 搜索“yarn.yarn-site.customized.configs”参数,并添加以下名称和取值,来增大RM与ZooKeeper之间定期交互时长的阈值。
- 名称:yarn.resourcemanager.zk-timeout-ms
- 值:根据实际需要配置,取值范围小于等于90000毫秒。
- 保存修改的配置。保存完成后请重新启动配置过期的服务或实例以使配置生效。
父主题: Yarn常见问题