前言:
(NN:NameNode ; DN:DataNode)
HDFS的高可用(HA)也称为联邦HDFS,因为单个namenode在HDFS集群中可能发生单节点故障,一旦节点不可用,那么整个HDFS集群就会处于不可用状态.
现在,在Hadoop2.x之后,出现了HDFS的高可用(HA)来解决上述问题,在HDFS集群中运行两个namenode节点,一个作为活动的NN(Active Namenode) 一个作为备份NN(Standby Namenode),二者之间是实时同步的,所以当活动NN发生错误后,备份NN会马上进行状态转换变成Active Namenode,避免对HDFS集群造成影响
那么我们详细讲解下他们之间是怎么完成实时同步,怎么完成切换工作?
- 在一个HDFS高可用集群中,配置两个独立的NN在运行,在任意时刻,都能保持由一个NN作为活动节点,一个作为备用节点,为了使两个节点之间保持数据实时同步,因此他们需要同一组独立运行的节点(journalNode , JNS)进行通信,活动的NN在进行数据命名空间或DN操作数据等情况下,操作流程会写入JNS中,同步到EditLog中,备用节点会实时监听JN中EditLog中的数据变化,一旦检测到有新操作更新,Standby NN(备份节点)就会将EditLog合并,更新自己的命名空间,完成数据同步.但是发生错误时, 他们的状态就会发生转变,切换流程是备份NN先将监听JNS中EditLog的变化合并到本地数据中,并对自身状态进行变更,变更为Active NN,通过这种机制,才保证了Active NN 和 Standby NN之间的数据保持统一,也就是第一关系的一致性.
- 其中对于状态立即转变起到关键作用的就是热备准备. DN对于数据统一起着重要作用