HDFS HA

NameNode HA

基于Qurom Journal Manager(QJM)解决方案,架构如下图:

  

  • Active NN、Standby NN有主备之分,NN Active是主的,NN Standby备用的

  • 集群启动之后,一个namenode是active状态,来处理client与datanode之间的请求,并把相应的日志文件写到本地中或JN中;

  • Active NN与Standby NN之间是通过一组JN共享数据(JN一般为奇数个),Active NN会把日志文件、镜像文件写到JN中去,只要JN中有一半写成功,那就表明Active NN向JN中写成功,Standby NN就开始从JN中读取数据,来实现与Active NN数据同步,这种方式支持容错,因为Standby NN在启动的时候,会加载镜像文件(fsimage)并周期性的从JN中获取日志文件来保持与Active NN同步

  • 为了实现Standby NN在Active NN挂掉之后,能迅速的再提供服务,DN不仅需要向Active NN汇报,同时还要向Standby NN汇报,这样就使得Standby NN能保存数据块在DN上的位置信息,因为在NameNode在启动过程中最费时工作,就是处理所有DN上的数据块的信息

  • 为了实现Active NN高热备,增加了FailoverController和ZK,FailoverController通过Heartbeat的方式与ZK通信,通过ZK来选举,一旦Active NN挂掉,就选取另一个FailoverController作为active状态,然后FailoverController通过rpc,让standby NN转变为Active NN

  • FailoverController一方面监控NN的状态信息,一方面还向ZK定时发送心跳,使自己被选举。当自己被选为主(Active)的时候,就会通过rpc使相应NN转变Active状态

posted @ 2019-07-10 11:34  北漂屌丝  阅读(143)  评论(0编辑  收藏  举报