参数 yarn.resourcemanager.recovery.enabled 详解

1. 作用

yarn.resourcemanager.recovery.enabled 是 YARN 的一个关键配置参数,用于 控制 ResourceManager(RM)是否在重启后恢复之前的状态。
• true:启用恢复机制,RM 重启后会从持久化存储(如 ZooKeeper 或 HDFS)中恢复之前的应用程序和节点管理器的状态。
• false(默认值):禁用恢复机制,RM 重启后会丢失所有运行中的任务信息,所有应用程序(如 Flink、Spark 等)都会失败。


2. 适用场景

• YARN HA(高可用)模式:在 RM 主备切换时,新激活的 RM 需要从存储中恢复状态,否则会导致任务丢失。
• RM 维护或意外重启:如果 RM 因升级或崩溃重启,启用恢复可以避免任务中断。


3. 依赖存储

恢复机制需要配置持久化存储(通过 yarn.resourcemanager.store.class 指定):
• 基于 ZooKeeper(推荐):

<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>

• 基于 HDFS(较少使用):

<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore</value>
</property>

4. 对 Flink on YARN 的影响

• 启用恢复(true):
• RM 切换或重启后,Flink 的 ApplicationMaster(AM)会重新注册到 RM,任务可能继续运行(需配合 Flink HA)。
• 如果 Flink 也配置了 HA(如 ZooKeeper),JobManager 可恢复任务状态。
• 禁用恢复(false):
• RM 重启后,所有应用程序(包括 Flink AM)会被终止,任务失败且无法自动恢复。


5. 相关参数
参数说明
yarn.resourcemanager.ha.enabled是否启用 RM 高可用(需配合 recovery.enabled=true)
yarn.resourcemanager.ha.rm-ids指定 RM 的 HA ID(如 rm1,rm2)
yarn.resourcemanager.zk-addressZooKeeper 地址(用于状态存储)

6. 配置示例
<!-- 启用 RM 状态恢复 -->
<property>
  <name>yarn.resourcemanager.recovery.enabled</name>
  <value>true</value>
</property>
<!-- 使用 ZooKeeper 存储状态 -->
<property>
  <name>yarn.resourcemanager.store.class</name>
  <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<!-- 配置 ZooKeeper 地址 -->
<property>
  <name>yarn.resourcemanager.zk-address</name>
  <value>zk1:2181,zk2:2181,zk3:2181</value>
</property>

7. 总结

• 必须启用:在 YARN HA 或需要 RM 故障恢复的场景下,必须设置 yarn.resourcemanager.recovery.enabled=true。
• 与 Flink HA 协同:仅 RM 恢复不够,Flink 还需配置 high-availability(如 ZooKeeper)以实现任务级恢复。
• 默认风险:若未启用,RM 重启会导致所有任务失败(包括 Flink、Spark 等)。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐