HDFS高可用

  • Post author:
  • Post category:其他


HDFS的高可用指的是HDFS持续对各类客户端提供读、写服务的能力。因为客户端对HDFS的读、写操作之前都要访问NameNode服务器,客户端只有从NameNode获取元数据之后才能继续进行读、写,所以 HDFS的高可用的关键在于NameNode上的元数据持续可用。

2NN的功能是把NameNode的fsimage和edit log做定期融合,融合后传给NameNode,以确保备份到的元数据是最新的,这一点类似于做了一个元数据的快照。Hadoop官方提供了一种quorum journal manager来实现高可用,那么就没必要配置2NN了。

在高可用配置下,edit log不再存放在NameNode节点,而是存放在一个共享存储的地方,这个共享存储由奇数个Journal Node组成,一般是3个节点(Journal Nodes,JNS),JNS专门用于存放活跃状态的NameNode写入的编辑日志。

由于编辑日志存储在JNS集群中,为了保证日志安全,因此JNS也必须是高可用的。

在Hadoop2.6中,提供了QJM(Quorum Journal Manager)方案来解决HA共享存储问题。

两个以上的NameNode(一般是2个),只能有一个NameNode处于活跃状态(Active),另一个是待命状态(Standby),只有Active的NameNode节点才能对外提供读、写HDFS服务,也只有Active态的NameNode才能向JNS写入编辑日志,Standby状态的NameNode负责从JNS中拷贝数据到本地。另外,各个DataNode也要向Active状态的NameNode报告状态(心跳信息、块信息等)。

2个NameNode与JNS保持通信,活跃的NameNode节点负责往JNS写入编辑日志,待命的NameNode节点负责观察JNS中的编辑日志,并且把日志拉取到待命节点,再加上两个NameNode各自的fsimage镜像文件,这样一来就能确保两个NameNode的元数据保持同步。一旦 Active NameNode不可用(ZKFC进程进行监控),提前配置的Zookeeper会把Standby节点自动变Active状态,继续对外提供读写服务。



版权声明:本文为m0_72324953原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。