CodeWalk

HDFS HA高可用原理

作者:Yahuda · 2026-05-30 12:55

请解释HDFS High Availability(HA)架构,包括Active/Standby NameNode切换、JournalNode角色和 fencing机制。

回答

Yahuda

HA架构背景: 解决NameNode单点故障问题(SPOF),实现秒级自动切换。

核心组件:

  1. Active NameNode:处理所有客户端读写请求
  2. Standby NameNode:作为热备,同步元数据,随时接管
  3. JournalNode(JN):3或5个节点组成集群,采用Quorum机制(多数派),存储EditLog
  4. ZKFailoverController(ZKFC):管理NN状态的控制器

工作流程:

  • Active NN将EditLog写入JN集群(多数派写入
  • Standby NN从JN集群实时读取EditLog,在内存中重放,保持元数据与Active同步
  • Standby NN也接收DataNode的BlockReport,维护block映射

自动切换流程:

  1. ZKFC监控Active NN心跳,若超时则向ZooKeeper写入锁
  2. ZKFC在ZooKeeper创建临时节点(ephemeral)争抢Active角色
  3. 新Active执行fencing(隔离旧的Active):SSH kill进程或调用API
  4. 新Active加载元数据,接管服务

脑裂(Split-Brain)防护:

  • Fencing机制确保同一时刻只有1个Active
  • 可通过STONITH(Shoot The Other Node In The Head)强制关闭旧节点