作家
登录

Hadoop技术之Hadoop HA机制学习

作者: 来源: 2017-10-24 09:09:09 阅读 我要评论

│ ├── edits_0000000003619813882-0000000003619831665 
  •  
  • │ ├── edits_0000000003619831666-0000000003619852153 
  •  
  • │ ├── edits_0000000003619852154-0000000003619871027 
  •  
  • │ ├── edits_0000000003619871028-0000000003619880765 
  •  
  • │ ├── edits_0000000003619880766-0000000003620060869 
  •  
  • │ ├── edits_inprogress_0000000003620060870 
  •  
  • │ ├── fsimage_0000000003618370058 
  •  
  • │ ├── fsimage_0000000003618370058.md5 
  •  
  • │ ├── fsimage_0000000003620060869 
  •  
  • │ ├── fsimage_0000000003620060869.md5 
  •  
  • │ └── seen_txid 
  •  
  • └── in_use.lock  
  • 2.2.3 QJM读过程分析

    膳绫擎所示的还有一个很重要的文件就是seen_txid,保存的是一个事务ID,这个事务ID是EditLog最新的一个停止事务id,当NameNode重启时,会次序遍积大年夜edits_0000000000000000001到seen_txid所记录的txid地点的日记文件,进行元数据恢复,如不雅该文件损掉或记录的事务ID有问题,会造成数据可托息的损掉。

    HA其本质上就是要包管主备NN元数据是保持一致的,即包管fsimage和editlog在备NN上也是完全的。元数据的同步很大年夜程度取决于EditLog的同步,而这步调的关键就是共享文件体系,下面开端介绍一下关于QJM共享存储机制。

    二、QJM道理

    2.1 QJM背景

    2.x版本中,HDFS架构解决了单点故障问题,即惹人双NameNode架构,同时借助共享存储体系来进行元数据的同步,共享存储体系类型一般有几类,如:Shared NAS+NFS、BookKeeper、BackupNode 和 Quorum Journal Manager(QJM),上图顶用的是QJM作为共享存储组件,经由过程搭建奇数结点的JournalNode实现主备NameNode元数据操作信息同步。Hadoop的元数据包含哪些信息呢,下面介绍下关于元数据方面的常识。

    所以对于替代筹划而言,也必须解决NAS相干缺点才能让HA更好办事。即设备无须定制化,通俗设备即可设备HA,安排简单,相干设备集成到体系本身,无需本身定制,同时元数据的同步也必须包管完全HA,不会因client问题而同步掉败。

    2.2 QJM道理

    2.2.1 QJM介绍

    QJM全称是Quorum Journal Manager, 由JournalNode(JN)构成,一般是奇数点结点构成。每个JournalNode对外有一个简略单纯的RPC接口,以供NameNode读写EditLog到JN本地磁盘。当写EditLog时,NameNode会同时向所有JournalNode并行写文件,只要有N/2+1结点写成功则认为此次写操作成功,遵守Paxos协定。其内部实现框架如下:

    [ 图3.QJM内部实现框架 ]

    大年夜图中可看出,主如果涉及EditLog的不合治理对象和输出流对象,每种对象发挥着各自不合感化:

    • FSEditLog:所有EditLog操作的人口
    • JournalSet: 集成本地磁盘和JournalNode集群上EditLog的相干操作
    • FileJournalManager: 实现本地磁盘上 EditLog 操作
    • QuorumJournalManager: 实现JournalNode 集群EditLog操作
    • AsyncLoggerSet: 实现JournalNode 集群 EditLog 的写操作集合
    • AsyncLogger:提议RPC请求到JN,履行具体的日记同步功能
    • JournalNodeRpcServer:运行在 JournalNode 节点过程中的 RPC 办事,接收 NameNode 端的 AsyncLogger 的 RPC 请求。
    • JournalNodeHttpServer:运行在 JournalNode 节点过程中的 Http 办事,用于接收处于 Standby 状况的 NameNode 和其它 JournalNode 的同步 EditLog 文件流的请求。

    2. 恢复in-process日记

    下面具体分析下QJM的读写过程。

    2.2.2 QJM 写过程分析

    膳绫擎提到EditLog,NameNode会把EditLog同时写到本地和JournalNode。写本地由设备中参数dfs.namenode.name.dir控制,写JN由参数dfs.namenode.shared.edits.dir控制,在写EditLog时会由两个不合的输出流来控制日记的写过程,分别为:EditLogFileOutputStream(本地输出流)和QuorumOutputStream(JN输出流)。写EditLog也不是直接写稻磁逄中,为包管高吞吐,NameNode会分别为EditLogFileOutputStream和QuorumOutputStream定义两个一致大年夜小的Buffer,大年夜小大年夜概是512KB,一个写Buffer(buffCurrent),一个同步Buffer(buffReady),如许可以一边写一边同步,所以EditLog是一个异步写过程,同时也是一个批量同步的过程,避免每写一笔就同步一次日记。

    这个是怎么实现边写边同步的呢,这中心其实是有一个缓冲区交换的过程,即bufferCurrent和buffReady在达到前提时会触发交换,如bufferCurrent在达到阈值同时bufferReady的数据又同步完时,bufferReady数据会清空,同时会将bufferCurrent指针指向bufferReady以知足持续写,别的会将bufferReady指针指向bufferCurrent以供给持续同步EditLog。膳绫擎过程用流程图就是表示如下:


      推荐阅读

      基于大数据的政府环境决策能力建设

    沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 作为数据的大年夜数据,是信息化、数字化、智能化技巧的应用,具有“4V”特点,亦即海量的数据范>>>详细阅读


    本文标题:Hadoop技术之Hadoop HA机制学习

    地址:http://www.17bianji.com/lsqh/38095.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)