Hadoop HA原理
Hadoop HA集群的工作机制如下图:
Hadoop HA集群总体上可以分为三部分:NameNode集群、JournalNode集群和Zookeeper集群。NameNode在某一时刻只有一个处于活跃状态,其他的都处于standby状态;JournalNode负责把edits文件传到standby的NameNode上;Zookeeper负责监控NameNode宕机情况,ZKFC(ZookeeperFailoverController)是专门监控NameNode健康的。
为了同步NameNode的元数据一致,有专门的JournalNode来同步元数据文件,活跃的NameNode的edits文件会写入journalnode集群,其他standby的结点会去读取journalnode上的edits文件,以此来同步自身的元数据。
详细过程如下:
- ZKFC的HealthyMonitor是监控NameNode的进程,是专门监控NameNode将康情况的进程。
- HealthyMonitor会定时想ZKFC进程报告NameNode情况。
- 当HealthyMonitor出现汇报了NameNode,ZKFC就会向AcitveStandbyEloctor报告。
- AcitveStandbyEloctor接到NameNode宕机报告就会通知zk集群选举出新的NameNode。
- zk集群经过内部选举,返回一个standby的NameNode给AcitveStandbyEloctor。
- AcitveStandbyEloctor想ZKFC报告选举结果。
- ZKFC为了防止是网络原因导致NameNode假死,就会结束NameNode进程。
- zk集群就会通知另一个ZKFC要求它修改它监控的NameNode的进程为活跃节点。