HDFS的HA(高可用)

问题:NameNode是单节点的,容易发生单点故障。

在hadoop2.x之后,可以部署两个NameNode,一个Active(活跃的),另外一个是StandBy(备份的),如果要实现这种高可用,需要解决两个问题:

1.数据的同步

数据的同步包括两部分:静态数据和动态数据,静态数据是指元数据信息(块名称,大小,偏移量,权限),动态数据是指datanode定时上送的块信息。

动态数据可以让datanode连接两个namenode,上送给两个namenode;静态数据可以采用Journal node进行日志的读取和写入,完成元数据(静态数据)的同步。

2.同一个时间段,只有一个namenode工作,防止两个同时在,发生脑裂

使用zookeeper协调系统,每个namenode都有zkfc的进程。

1)健康监控

health montor监控namenode的健康状况,如果不舒服,则需要调用2)

2)状态变化回调函数

zkfailercontroller

3)进行选举

activeStandyElector

选举成功的,调用方法变成了active

否则选择失败,调用方法变成standy by

爱人不亲,反其仁;治人不治,反其智;礼人不答,反其敬;行有不得,反求诸己
原文地址:https://www.cnblogs.com/lina-2015/p/14144184.html