• HDFS学习之路二


    HDFS的元数据辅助管理

    SecondaryNameNode的作用:  SecondaryNameNode定期合并fsimage和edits,把edits控制在一个范围内

    配置SecondaryNameNode

    • SecondaryNameNode在 conf/masters中指定

    • masters指定的机器上 , 修改 hdfs-site.xml

    •     <property>
              <name>dfs.namenode.secondary.http-address</name>
              <value>node03:50090</value>
          </property>

      Fsimage & Edits:

        当Hadoop集群当中,NameNode的所有元数据信息都保存在了FsimageEidts文件当中

        这两个文件就组成了最新的所有数据的元数据信息

    Fsimage :

    • NameNode中关于元数据的镜像,一般称为检查点,fsimage存放了一份完整的元数据信息

    • 开始时对NameNode的操作都放在edits

    • fsimage内容包括了NameNode管理下的所有DataNode文件及文件block及block所在的DataNode元数据信息

    • 随着edits内容增大,就需要在一定时间点和fsimage合并.

    Edits :

    • edits存放了客户端最近一段时间的操作日志

    • 客户端对HDFS进行写文件时会首先被记录在edits文件中

    • edits修改时,元数据也会更新

     元数据信息保存在配置文件hdfs-site.xml当中

        <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:///export/servers/hadoop-2.7.6/hadoopDatas/namenodeDatas,file:///export/servers/hadoop-2.7.6/hadoopDatas/namenodeDatas2</value>
        </property>
        
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:///export/servers/hadoop-2.7.6/hadoopDatas/datanodeDatas,file:///export/servers/hadoop-2.7.6/hadoopDatas/datanodeDatas2</value>
        </property>
        
        <property>
            <name>dfs.namenode.edits.dir</name>
            <value>file:///export/servers/hadoop-2.7.6/hadoopDatas/nn/edits</value>
        </property>

    查看fismage中的文件:

    #使用命令 hdfs oiv
    cd /export/servers/hadoop2.7.6/hadoopDatas
    hdfs oiv -i fsimage_000000000000864 -p XML -o hello.xml

    查看edits中的文件:

    #使用命令 hdfs oev
    cd /export/servers/hadoop2.7.6/hadoopDatas
    hdfs oev -i fsimage_000000000000864 -p XML -o omyedit.xml

     Datanode和Namenode心跳机制详解:

    1. hdfs是node01/slave结构,node01包括namenode和resourcemanager,slave包括datanode和nodemanager
     
    2. node01启动时会开启⼀个IPC服务,等待slave连接
     
    3. slave启动后,会主动连接IPC服务,并且每隔3秒链接⼀次,这个时间是可以调整的,设置heartbeat,这个每隔⼀段时间连接⼀次的机制,称为⼼跳机制。Slave通过⼼跳给node01汇报⾃⼰信息,node01通过⼼跳下达命令。
     
    4. Namenode通过⼼跳得知datanode状态。Resourcemanager通过⼼跳得知nodemanager状态
     
    5. 当node01⻓时间没有收到slave信息时,就认为slave挂掉了。
     
    注意:   超⻓时间计算结果:默认为10分钟30秒
     
     

    SecondaryNameNode的检查点机制详解:

      SecondaryNamenode,它可以辅助Namenode进⾏fsimage和editlog的合并⼯作,减⼩editlog⽂件⼤⼩,以便缩短下次Namenode的重启时间,能尽快退出安全模式。
      两个⽂件的合并周期,称之为检查点机制(checkpoint),是可以通过hdfs-default.xml配置⽂件进⾏修改的:
     
    <property>
     <name>dfs.namenode.checkpoint.period</name>
     <value>3600</value>
     <description>两次检查点间隔的秒数,默认是1个⼩时</description>
    </property> 
    <property>
     <name>dfs.namenode.checkpoint.txns</name>
     <value>1000000</value>
     <description>txid执⾏的次数达到100w次,也执⾏checkpoint</description>
    </property> 
    <property>
     <name>dfs.namenode.checkpoint.check.period</name>
     <value>60</value>
     <description>60秒⼀检查txid的执⾏次数</description>
    </property>

      1. SecondaryNamenode请求Namenode停⽌使⽤正在编辑的editlog⽂件,Namenode会创建新的editlog⽂件,同时更新seed_txid⽂件。

      2. SecondaryNamenode通过HTTP协议获取Namenode上的fsimage和editlog⽂件。

      3. SecondaryNamenode将fsimage读进内存当中,并逐步分析editlog⽂件⾥的数据,进⾏合并操作,然后写⼊新⽂件fsimage_x.ckpt⽂件中。

      4. SecondaryNamenode将新⽂件fsimage_x.ckpt通过HTTP协议发送回Namenode。

      5. 更名操作,将fsimage文件更名

  • 相关阅读:
    基于jquery的web在线流程图设计器gooFlow
    angularJS学习笔记二
    angularJS学习笔记一
    JavaScript作用域链详解
    图片查看器(可拖拽,缩放,轮播)
    小议window.event || ev
    Vue安装准备工作
    让VS2013添加新类时自动添加public关键字
    win10太垃圾,真的不好用。
    Bind 和 ScaffoldColumn[转]
  • 原文地址:https://www.cnblogs.com/joey-413/p/13958289.html
Copyright © 2020-2023  润新知