请阐述 Hadoop 高可用性的实现机制,并指出保障该机制运行所需的关键组件有哪些?
考察说明
考查对 Hadoop 高可用性原理及核心组件的理解程度。
回答思路
- 【回答框架 1】Hadoop 高可用性主要针对 NameNode 这一单点故障点,通过 Active/Standby 双机热备架构实现,Active NameNode 提供服务,Standby NameNode 实时同步元数据状态,一旦 Active 故障,Standby 可快速切换接管。
- 【回答框架 2】核心组件包括 ZooKeeper、JournalNode、共享存储(如 NFS 或 BookKeeper)、FailoverController(含 ZKFC)以及 NameNode 自身。ZooKeeper 用于选主与分布式协调,JournalNode 负责存储 NameNode 的 edit log,FailoverController 监控 NameNode 健康并触发自动故障转移。
- 【回答框架 3】客户端与 DataNode 需感知当前 Active NameNode,DataNode 同时向两个 NameNode 发送心跳和块报告,以便 Standby 也能维护最新的块位置映射。
- 【回答框架 4】高可用实现还涉及 fencing 机制,防止脑裂,即确保同一时刻只有一个 NameNode 写入 edit log,通常通过隔离旧 Active 进程或共享存储锁实现。
- 【关键点 1】高可用核心是 Active/Standby 双机热备与自动故障转移。
- 【关键点 2】依赖 ZooKeeper 进行选主,JournalNode 共享 edit log。
- 【关键点 3】DataNode 同时上报心跳给两个 NameNode,保证 Standby 元数据最新。
- 【关键点 4】需通过 fencing 机制避免脑裂。
- 【易错点 1】误以为高可用能完全消除故障,实际只能缩短停机时间。
- 【易错点 2】忽略 JournalNode 自身需要奇数个(如3个)以保证一致性。
- 【易错点 3】未提及故障转移后的数据一致性检查。