journal node 元数据信息管理
active状态 和 standby状态 元数据保持一致
ZKFC是个进程,监控namenode的状态,一旦挂掉,会重新选举一个新的namenode并激活
ZKFailoverController 故障转移控制器
HealthMonitor 监控健康状况
ActiveStandbyElector 自动完成主备选举
共享数据存储系统原理 journal node
1.active nn 生成元数据并向 共享数据存储系统写edits日志
2.standby nn 读取 edits日志
3.有一半以上的journal node存在就认为是健康的
宕机后的主备切换过程(zookeeper集群 配合 ZKFC进程中的三个组件)
1.healthMonitor(HM) 监控nn健康状况
2.healthMonitor 向 zkFailoverController(ZKFC)汇报监控状况
3.zkFailoverController 向 ActiveStandbyElector(ASE) 汇报nn宕机情况
4.ASE 通知 zookeeper 选举一个新的nn
5.zookeeper 回复给 ASE选举结果
6.ASE 向 ZKFC 汇报选举结果
7.ZKFC 和选举出来的nn通信 改变其状态
联邦机制:namenode横向扩展。解决元数据多了以后,nn内存不够的问题
active+standby 是一个 namespace
横向扩展的namespace 相互隔离 独自管理 自己的元数据
每个namespace都有一个独立的编号 BlockPoolID
对外提供服务时 客户端感觉不到
联邦+高可用:既能解决横向扩展问题,又能解决单点故障问题