HDFS HA高可用原理
请解释HDFS High Availability(HA)架构,包括Active/Standby NameNode切换、JournalNode角色和 fencing机制。
回答
Yahuda
HA架构背景: 解决NameNode单点故障问题(SPOF),实现秒级自动切换。
核心组件:
- Active NameNode:处理所有客户端读写请求
- Standby NameNode:作为热备,同步元数据,随时接管
- JournalNode(JN):3或5个节点组成集群,采用Quorum机制(多数派),存储EditLog
- ZKFailoverController(ZKFC):管理NN状态的控制器
工作流程:
- Active NN将EditLog写入JN集群(多数派写入)
- Standby NN从JN集群实时读取EditLog,在内存中重放,保持元数据与Active同步
- Standby NN也接收DataNode的BlockReport,维护block映射
自动切换流程:
- ZKFC监控Active NN心跳,若超时则向ZooKeeper写入锁
- ZKFC在ZooKeeper创建临时节点(ephemeral)争抢Active角色
- 新Active执行fencing(隔离旧的Active):SSH kill进程或调用API
- 新Active加载元数据,接管服务
脑裂(Split-Brain)防护:
- Fencing机制确保同一时刻只有1个Active
- 可通过STONITH(Shoot The Other Node In The Head)强制关闭旧节点