参数 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-address | ZooKeeper 地址(用于状态存储) |
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 等)。