美文网首页
Namenode HA框架

Namenode HA框架

作者: 黑小柴 | 来源:发表于2021-11-02 08:22 被阅读0次

    非HA的Namenode架构

    一个HDFS集群只存在一个Namenode,Datanode只向一个Namenode汇报 ,Namenode的edit log存储在本地目录

    HA架构:

    包含两个Namenode,主(active)与备(standby),ZKFC(Zookeeper Failover Controller),ZK, share editlog(可以是NFS和QJM)

    editlog
    Namenode记录了HDFS的目录文件等元数据,客户端每次对文件的增删改等操作,Namenode都会记录一条日志,叫做editlog

    ZKFC
    Zookeeper故障转移控制器控制Namenode故障转移过程,每个Namenode对应一个ZKFC

    NFS: Network File System
    NameNode之间通过NAS进行元数据同步,有一定局限性

    QJM: Quorum Journal Manager
    (Quorum一致性:w+r>n r>n-w)
    由JournalNode(JN)组成,一般是奇数个节点。JournalNode保存共享的编辑日志。每个JournalNode对外有一个简易的RPC接口,以供NameNode读写EditLog到JN本地。

    流程:

    集群启动后,一个Namenode处于active状态,并提供服务,处理客户端和datanode请求,并把editlog写到share editlog(JournalNode)和本地。

    另一个Namenode处于Standby状态,它启动时从fsimage(File System Image)(保存了HDFS中文件名称,目录结构,文件权限等信息)加载HDFS元数据到内存,然后周期性地从share editlog(JournalNode)获取editlog,保持与active的状态同步。

    为了实现standby在active挂掉后迅速提供服务,需要Datanode同时向两个Namenode发送心跳(block report 块状态报告)(健康状态和块位置),因为Namenode启动中最费时的工作是处理所有的datanode的block report。

    ZKFC与ZK通信,通过ZK选主,ZKFC通过RPC让Namenode转换为active或standby。

    NN HA

    防止脑裂

    • 使用QJM实现共享同存储的fencing,以确保只有一个Namenode能写成功

    • Datanode fencing,只有一个Namenode能命令Datanode

    • 客户端fencing,确保只有一个Namenode能相应客户端请求,让访问standby的Namennode的客户端直接失败。

    相关文章

      网友评论

          本文标题:Namenode HA框架

          本文链接:https://www.haomeiwen.com/subject/cyfaoltx.html