NameNode和SecondaryNameNode(重点二)

Fsimage和Edits解析

概念

NameNode被格式化之后,将在/opt/module/hadoop-2.7.2/data/tmp/dfs/name/current目录中产生如下文件

fsimage_0000000000000000000
fsimage_0000000000000000000.md5
seen_txid
VERSION

(1)Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,
其中包含HDFS文件系统的所有目录和文件inode的序列化信息。
(2)Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到Edits文件中。
(3)seen_txid文件保存的是一个数字,就是最后一个edits_的数字
(4)每次NameNode启动的时候都会将Fsimage文件读入内存,加载Edits里面的更新操作,保证内存中的元数据信息是最新的、同步的,可以看成NameNode启动的时候就将Fsimage和Edits文件进行了合并。

oiv查看Fsimage文件

以下操作使用dev1账户 进入 current目录
(1)查看oiv和oev命令

hdfs

oiv apply the offline fsimage viewer to an fsimage
oev apply the offline edits viewer to an edits file
(2)基本语法

hdfs oiv -p 文件类型 -i镜像文件 -o 转换后文件输出路径

(3)案例实操

 pwd
 hdfs oiv -p XML -i fsimage_0000000000000000025 -o ./fsimage.xml
 cat ./fsimage.xml

将显示的xml文件内容拷贝到Eclipse/Idea中创建的xml文件中,并格式化。
使用浏览器更方便

思考:可以看出,Fsimage中没有记录块所对应DataNode,为什么?
在集群启动后,要求DataNode上报数据块信息,并间隔一段时间后再次上报。

oev查看Edits文件

(1)基本语法

hdfs oev -p 文件类型 -i编辑日志 -o 转换后文件输出路径

(2)案例实操

 hdfs oev -p XML -i edits_0000000000000000012-0000000000000000013 -o ./edits.xml
 cat ./edits.xml

将显示的xml文件内容拷贝到Eclipse/Idea中创建的xml文件中,并格式化。
使用浏览器更方便

思考:NameNode如何确定下次开机启动的时候合并哪些Edits?

猜你喜欢

转载自blog.csdn.net/u013621398/article/details/115078013