本篇博客,小菌为大家带来的是HDFS中NameNode的Fsimage与Edits的详解。


文章目录




        在之前的分享中,我们在谈到NameNode的作用时,有一个作用就是管理文件系统的元数据。接下来小菌将先为大家带来的是NameNode元数据解析的过程。

NameNode元数据解析


NameNode元数据解析 (1)第一次启动namenode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载edits和fsimage文件到内存。
(2)客户端对元数据进行增删改的请求。
(3)namenode记录操作日志,更新滚动日志。
(4)namenode在内存中对数据进行增删改查。


HDFS中Fsimage,Edits详解(6)_hadoop


fsimage保存了最新的元数据检查点​,在HDFS启动时加载fsimage的信息,包含了整个HDFS文件系统的所有目录和文件的信息。
对于文件来说包括了数据块描述信息、修改时间、访问时间等。
对于目录来说包括修改时间、访问权限控制信息(目录所属用户,所在组)等。

editlog​主要是​在NameNode已经启动情况下对HDFS进行的各种更新操作进行记录​,HDFS客户端执行所有的写操作都会被记录到editlog中。
Fsimage,editlog主要用于在集群启动时将集群的状态恢复到关闭前的状态。
为了达到这个目的,​集群启动时将Fsimage、editlog加载到内存中,进行合并,合并后恢复完成


查看元数据目录的配置


先到达hadoop文件夹下
​/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop​​ 查看hdfs-site.xml信息
​vim /hdfs-site.xml​


<property>
<name>dfs.namenode.name.dir</name>
<value>
file:///export/servers/Hadoop-2.6.0-cdh5.14.0/HadoopDatas/namenodeDatas
</value>
</property>
<property>
<name>dfs.namenode.edits.dir</name>
<value>
file:///export/servers/Hadoop-2.6.0-cdh5.14.0/HadoopDatas/dfs/nn/edits
</value>
</property>

其中dfs.namenode.name.dir下的值为FSimage文件当中的文件信息路径,

        dfs.namenode.edits.dir下的值为editlog数据存放路径



FSimage文件当中的文件信息查看

提示: 需要使用命令 ​hdfs oiv

`切换到fsimage目录下`
cd /export/servers/Hadoop-2.6.0-cdh5.14.0/HadoopDatas/namenodeDatas/current
`把目录下的fsimage文件转换成xml格式的文件输出`
hdfs oiv -i fsimage_0000000000000000864 -p XML -o hello.xml

HDFS中Fsimage,Edits详解(6)_Fsimage_02

1.不转换成xml文件直接打开

文件和环境一起出现​乱码​现象,当前会话无法使用,需要再重新克隆一个会话!

HDFS中Fsimage,Edits详解(6)_HDFS_03

2.转换成xml文件打开

HDFS中Fsimage,Edits详解(6)_hdfs_04

3.把转换后的xml文件上传到windows上打开

我们利用sz命令把linux上的文件上传到windows上,然后用浏览器打开。可以发现经过浏览器处理之后,xml整体结构看得更加清楚。

HDFS中Fsimage,Edits详解(6)_Fsimage_05



edits当中的文件信息查看

提示: 需要使用命令 ​hdfs oev

`切换到edits保存的目录下`
cd /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/edits/current
`把目录下的edits文件转换成xml格式的文件输出`
hdfs oev -i edits_0000000000000000865-0000000000000000866 -o myedit.xml -p XML

查看文件的方式与FSimage相似,这里不作过多介绍!




总结1.Fsimage 记录HDFS文件系统的镜像或快照(周期性记录)(此文件相对较小)
2.Edits 记录客户端对进行的所有的增、删、改、追加等操作(没有使用Secondary NameNode之前,不是周期性生成)(此文件相对较大)
3.Fsimage Edits作用:用于还原集群上次关闭时的状态。还原时将两个文件加载到内存,检查、合并最终生成 一个新的Fsimage 。原本的Edits失效。


本次的分享就到这里了,小伙伴们有什么疑惑或好的建议可以积极在评论区留言,小菌后续还会推出HDFS系列的其他内容,希望大家持续关注小菌ヾ(๑╹◡╹)ノ"!