Hadoop HA 架构图概述

为了解决HDFS1.0的设计存在的单点故障问题,HDFS2.0开始采用了HA(High Availability高可用)架构。

   在HDFS HA中,设置两个NameNode,一个处于Active状态对外进行服务,另一个处于Standby状态,随时待命成为Active。因为Standby NN 是 Active NN的“热备份” ,所以Active的状态信息必须实时同步到Standby中。 状态的同步,我们一般借助JN

(JournalNode),它能使得Standby监听Active,一旦发现Active有新的写入,就立刻读取数据并加载到自己的内存里,从而使Active和Standby的状态完全同步。  

  当我们的Active挂掉时,ZKFC,一个单独地进程,会通过RPC协议将我们另一台Standby自动切换成Active,从而保证集群中一直存在一个Active对外服务。

   DN(DataNode)会不定时地向两个NN发送心跳,告知健康状态与Block信息。

角色:

 ACTIVE NN: 操作记录写到自己的editlog
                      同时将信息写入JN集群中
                      接收DN的心跳和块报告
           

 STANDBY NN: 同时接收JN集群的日志,显示读取执行log操作(重演),以保证两个NN的状态一致
                          接收DN的心跳和块报告

JounalNode: 用于active standby nn节点的同步数据
                     一般部署2n+1

ZKFC: 单独的进程,ZKFC是一个Zookeeper的客户端
            监控NN健康状态
            向zk集群定期发送心跳,使得自己可以被选举;
            当自己被zk选举为active的时候,zkfc进程通过RPC协议调用使NN节点的状态变为active,
            对外提供实时服务,是无感知的。

Zookeeper集群作用主要有:

              通过节点竞争锁的,选举哪个节点做Active,哪个节点做Standby。

              为保证选举机制,zookeeper集群也是2n+1台。   

20台节点: 5台
20~100台节点: 7/9/11台
>100台节点: 11台 
但是: 不是说zk节点越多越好 ,因为越多的zk节点,选举的时候会很慢,大大的影响了对外服务的效率。

几百台节点, zk部署的机器就它一个进程
 

猜你喜欢

转载自blog.csdn.net/qq_34341930/article/details/88863051
今日推荐