吃透 Hadoop 高可用:NameNode/ResourceManager HA 面试必背 17问
·
一、基础概念类
1. 为什么要做 NameNode HA?不做会有什么问题?
- NameNode 是 HDFS 唯一元数据节点,单点故障(SPOF)。
- 一旦 NN 挂掉,整个 HDFS 不可用,业务中断。
- HA 通过 Active/Standby 架构实现热备 + 自动切换,保证高可用。
2. 为什么要做 ResourceManager HA?
- RM 是 YARN 全局资源调度中心,单点故障会导致:
- 新任务无法提交
- 运行中的任务无法调度
- 集群资源不可控
- RM HA 保证调度服务不间断。
二、NameNode HA 原理类
3. NameNode HA 架构包含哪些核心组件?
- Active NameNode
- Standby NameNode
- JournalNode(JN)集群
- Zookeeper 集群
- ZKFC(ZK Failover Controller)
4. QJM 是什么?作用是什么?
- QJM:Quorum Journal Manager,基于多数派机制的共享编辑日志方案。
- 作用:
- Active NN 写 edits 到 JN 集群
- Standby NN 从 JN 拉取 edits 保持同步
- 保证元数据一致性,替代 NFS,更安全可靠
5. ZKFC 是干什么的?
- 监控 NameNode 健康状态
- 向 ZK 注册、抢锁
- 主备节点自动切换
- 执行 fencing 隔离,防止脑裂
6. 什么是脑裂?如何解决?
- 脑裂:同一时刻出现两个 Active NN,导致元数据错乱。
- 解决:
- ZK 分布式锁,只有一个能抢到主
- fencing 机制(sshfence /shellfence)强制杀掉旧主
7. Standby NN 怎么保持和 Active NN 同步?
- Active 写 edits 到 JournalNode
- Standby 从 JN 实时拉取 edits
- Standby 定期 checkpoint 生成 fsimage
- 内存元数据与 Active 保持一致
8. NameNode HA 故障转移流程?
- Active NN 异常或宕机
- ZK 会话失效,释放锁
- 备机 ZKFC 感知,尝试抢锁
- fencing 旧 Active
- Standby 切换为 Active
- 客户端通过代理自动连接新主
三、ResourceManager HA 原理类
9. RM HA 架构有哪些组件?
- Active RM
- Standby RM
- Zookeeper(选举 + 状态存储)
- RMStateStore(状态持久化)
- NodeManager
10. RMStateStore 作用是什么?有几种实现?
- 存储 Application 状态、Container 信息、尝试信息等。
- 实现方式:
- FileSystem(不适合 HA)
- ZKRMStateStore(生产推荐)
- LevelDB
11. RM 挂了,正在跑的任务会挂吗?
- 不会。
- AppMaster 自己管理任务运行。
- 新 RM 启动后从 StateStore 恢复状态,NM 重连,任务继续。
12. RM HA 切换流程?
- Active RM 宕机
- ZK 中主节点锁释放
- Standby RM 竞选为 Active
- 从 StateStore 恢复应用信息
- NM 自动重连新 RM
- 集群恢复调度能力
四、配置 & 生产实践类
13. NN HA 必须配置哪些关键配置项?
- dfs.nameservices
- dfs.ha.namenodes
- dfs.namenode.shared.edits.dir(JN 地址)
- dfs.client.failover.proxy.provider
- dfs.ha.fencing.methods
- dfs.ha.automatic-failover.enabled
- ha.zookeeper.quorum
14. RM HA 关键配置?
- yarn.resourcemanager.ha.enabled
- yarn.resourcemanager.ha.rm-ids
- yarn.resourcemanager.zk-address
- yarn.resourcemanager.store.class
- yarn.resourcemanager.recovery.enabled
15. 为什么 JournalNode、ZK 节点数要奇数?
- 为了满足 ** 多数派(quorum)** 机制:
- 3 节点 ≥2 台存活即可
- 5 节点 ≥3 台存活即可
- 避免脑裂、避免脑裂、保证选举有效。
16. 生产环境 NN HA 用 NFS 还是 QJM?
- 必须 QJM。
- NFS 有单点、性能差、锁不可靠。
- QJM 高可靠、无单点、Hadoop 官方推荐。
五、面试必问:HA 模式下启动哪些服务?启动顺序?
1. 必须启动的服务
ZK 集群
zkServer.sh start(所有 ZK 节点)
NameNode HA 相关
- JournalNode(JN)
- NameNode(2 台:Active + Standby)
- ZKFC(每台 NN 都起)
- DataNode
ResourceManager HA 相关
- ResourceManager(2 台:Active + Standby)
- NodeManager
2. 标准启动顺序(面试高频)
- 启动 Zookeeper 集群
- 启动 JournalNode 集群
- 格式化 ZK(hdfs zkfc -formatZK)【仅第一次】
- 启动 HDFS:start-dfs.sh
- 会自动启动 NN、DN、ZKFC
- 启动 YARN:start-yarn.sh
- 会自动启动 RM、NM
3. 各角色进程总结(一句话背会)
- NN HA:ZK + JN + NN + DN + ZKFC
- RM HA:ZK + RM + NM
六、高频压轴面试题(面试官最爱)
17. NN HA 和 RM HA 的异同点?
相同:
- 都是 Active/Standby 架构
- 都依赖 ZK 做选举
- 都支持自动故障转移
不同:
- NN HA 依赖 JN 同步元数据
- RM HA 依赖 StateStore 存储状态
- NN 有 fencing,RM 一般不需要 fencing
- NN 切换依赖 ZKFC,RM 自身集成 HA 模块
更多推荐


所有评论(0)