1.什么是HDFS HA
1)HA=high available(高可用),即7*24小时不中断服务
2)实现高可用最关键的策略是消除单点故障,HA分为HDFS HA和yarn HA.
3)HDFS NameNode单点故障的原因
[1]NameNode宕机
[2]NameNode需要升级,包括软件或硬件的升级
4)HDFS HA功能通过配置active/standby两个NameNode实现在集群对NameNode的热备份来解决NameNode单点故障的问题.
注:热备份是在系统处于正常运转状态下的备份.
2.HDFS HA与普通HDFS的不同
1)多了两个组件
ZooKeeper,ZKFC
2)元数据的管理方式需要改变
两个NameNode各有一份内存元数据和磁盘元数据镜像文件.
注:stand by状态的NameNode会不断拉取active状态的NameNode的写对的edits,在内存中同步到最新的状态(内存元数据),这个进行同步的操作由JournalNode做,edits操作日志只有active状态的NameNode节点可以做写操作,两个NameNode都可以读取edits.共享的edits放在一个共享存储中管理(qjournal).
3)如何切换NameNode
[1]ZKFC
在每个NameNode所在节点添加了一个zkfailoverController(ZKFC),ZKFC是一个zookeeper客户端.每个ZKFC负责监控自己所在的NameNode,他负责NameNode状态的监控.切换时需要防止brain split(脑裂)的发生.
[2]隔离(fence)
即同一时刻仅仅有一个NameNode对外提供服务.
3.HDFS HA自动故障转移工作机制
1active状态的NameNode假死了
2.它内存的ZKFC进程检测到了它的假死
3.该ZKFC通知另一台处于standby状态的NameNode的ZKFC
4.处于standby状态的NameNode的ZKFC强行杀死active状态的NameNode,防止脑裂.
执行 ssh kill -9 namenode
如果执行失败则调用用户自定义脚本程序 /shells/poweroff.sh
5.ZKFC获取命令运行结果
6.ZKFC切换该NameNode状态为active