欢迎大家前来观看,希望大家多多点赞!多多评论。
1.HAhadoop集群拥有多个namenode,一个为active namenode ,一个为standby namenode 这两个namenode组建成一个nameserver 也就是联邦(federation)机制。
2.ZKFC是zookpeer提供的一种服务,用来监听namenode状态,每一个namenode都被一个ZKFC来监听,ZKFC会将namenode的状态注册到zookeeper集群中。
3.当 active namenode挂掉之后,监听这台namenode的ZKFC会将信息传输到zookpeer集群中,此时 监听standby namenode 的ZKFC 会给active namenode发送一条远程SSH kill 指令,杀死active namenode (防止active namenode 因为cpu繁忙等原因临时挂掉而重新启动,导致集群中有多个active namenode,造成客户端不知道访问哪一个namenode而冲突。)
4.如果SSH kill 指令发送超时,则执行用户自定义shell脚本。
5,上述3,4 则为fencing机制。此时 active namenode 与 standby namenode 之间的转换问题就解决了。
6. 为了达到两个namenode 的元数据同步,我们需要将 namenode 中的 edits.log 共享到一个公用的地方。那么 ,我们将这些元文件放在哪里呢?
7.我们将这些文件放在Qjournal中,Qjournal也是一个集群,这个集群依赖与zookeeper。Qjournal 里面包含有journalnode ,我们将这些元数据共享到journalnode中,方便active 与standby namenode 之间的元数据共享。
8:下图为运行机制原理图,画的很丑,希望大家谅解。
8.以上