请描述 Yarn 中 ResourceManager 的 Failover 机制设计原理,并说明在 ResourceManager 出现故障时,系统通过哪些具体步骤实现高可用?
考察说明
考查对 Yarn ResourceManager 高可用机制(Active/Standby 架构、ZK 选主、状态共享和故障切换过程)的理解。
回答思路
- 【回答框架 1】Yarn ResourceManager 高可用(RM HA)采用 Active/Standby 架构,多个 RM 节点中只有一个处于 Active 状态提供服务,其余为 Standby 并实时同步元数据。
- 【回答框架 2】状态共享依赖 ZooKeeper 或内嵌存储(如 HDFS)保存应用、队列和 token 等状态,Active RM 将周期性写入状态,Standby 不断读取并更新内存,实现热备。
- 【回答框架 3】故障检测由 ZooKeeper 或基于 ZK 的选举实现,当 Active RM 心跳超时后,ZK 自动触发 failover,选择下一个 Standby 成为新 Active,并通知各 NodeManager 和客户端更新 RM 地址。
- 【回答框架 4】切换过程中,新 Active 需要确保旧 Active 完全退出(fencing),防止脑裂,并恢复未完成的应用和资源分配,期间 Yarn 集群的调度可能短暂停顿。
- 【回答框架 5】最终高可用保证是故障自动转移,无需人工干预,但应用重试和客户端重连仍是必要的,以应对秒级切换窗口。
- 【关键点 1】RM HA 基于 Active/Standby 架构,实现计算资源管理的高可用。
- 【关键点 2】依赖 ZK 完成故障检测与自动选主。
- 【关键点 3】Active 与 Standby 通过共享状态存储或 ZK 同步元数据。
- 【关键点 4】切换时通过 fencing 防止脑裂。
- 【关键点 5】故障切换过程中存在短暂不可用,客户端需重试。
- 【易错点 1】不要将 RM HA 等同于 Yarn 整体高可用,其他组件故障仍需单独保障。
- 【易错点 2】不能只提 ZK 选主,必须说明状态共享和同步机制。
- 【易错点 3】避免遗漏 fencing 机制,它防止新老 Active 同时工作导致状态不一致。