HDFS的元数据辅助管理
SecondaryNameNode的作用: SecondaryNameNode定期合并fsimage和edits,把edits控制在一个范围内
-
SecondaryNameNode在
conf/masters
中指定 -
在
masters
-
<property> <name>dfs.namenode.secondary.http-address</name> <value>node03:50090</value> </property>
这两个文件就组成了最新的所有数据的元数据信息
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心跳机制详解:
SecondaryNameNode的检查点机制详解:
<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文件更名