更新时间: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之间定期交互时长的阈值,就会出现主备倒换。

可以参考以下操作进行处理:

  1. 登录FusionInsight Manager。

    登录集群Manager具体操作,请参考访问MRS集群Manager

  2. 选择“集群 > 服务 > Yarn > 配置 > 全部配置”。
  3. 搜索“yarn.yarn-site.customized.configs”参数,并添加以下名称和取值,来增大RM与ZooKeeper之间定期交互时长的阈值。

    • 名称:yarn.resourcemanager.zk-timeout-ms
    • 值:根据实际需要配置,取值范围小于等于90000毫秒。

  4. 保存修改的配置。保存完成后请重新启动配置过期的服务或实例以使配置生效。