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文件更名

原文地址:https://www.cnblogs.com/joey-413/p/13958289.html