前言:小编引入的图片和文字描述都是来自于传智播客的视频讲解,在此感谢传智播客的老师
namenode负责集群元数据的管理,一旦namenode 停止工作,集群就完了,因此出现了高可用机制
有两台namenode主机,一台处于active(活跃)状态,一台处于shandby(备用)状态,这两台主机通过JournalNode集群进行数据传输,JournalNode 集群是由多台JournalNode主机组成,active状态的主机负责向JournalNode主机写入数据,shandby状态的namenode从集群中读取数据,始终保存两台主机的数据一致。
nodename主机的热备切换
- HealthMonitor监控namenode主机的运行状态
- HealthMonitor把监控信息向ZKFailoverController反馈
- ZKFailoverController向ActiveStandbyElector汇报namenode的状态
- 当namenode 不能提供服务时,ActiveStandbyElector通知zookeeper集群选举新的namenode
- zookeeper集群选举新的namenode并把选举结果返回给ActiveStandbyElector
- ActiveStandbyElector把选举结果转发给ZKFailoverController
- ZKFailoverController 负责修改namenode的状态
- 第五步的同时, zookeeper集群通知ZKFailoverController,去修改第二台namenode切换为active状态
hadoop的联邦机制
多台namenode主机由多个namespace进行管理,当namenode内存不够时,可以随时进行扩展。