【Hadoop-HDFS】HDFS中Fsimage与Edits详解
- 1)概述
- 2)NameNode元数据解析
- 3)Fsimage
- 3.1.Fsimage 的作用
- 3.2.FSimage 的文件信息查看
- 4)Edits
- 4.1.Edits 的作用
- 4.2.Edits 的文件信息查看
- 5)元数据信息目录的配置
1)概述
在HDFS中,NameNode 保存了整个 HDFS 的元数据信息,而这些数据最终会被持久化到 Fsimage 文件和 EditLog 文件。
换而言之,NameNode 的元数据信息
由 Fsimage
和 Editlog
组成。
Fsimage 存放上次 checkpoint 生成的文件系统元数据。
EditLog 则存放文件系统的操作日志,也就是用户对目录、文件的每个写操作(包括创建、删除、写入等)都会被记录到 Editlog 文件中。
注意:
Fsimage,Editlog 主要用于在集群启动时将集群的状态恢复到关闭前的状态。为了达到这个目的,集群启动时将 Fsimage、Editlog 加载到内存中进行合并,合并后恢复完成。
2)NameNode元数据解析
1、`第一次启动 NameNode 格式化后,创建 Fsimage 和 Edits 文件。如果不是第一次启动,直接加载 Edits 和 Fsimage 文件到内存。
2、客户端对元数据进行增删改的请求。
3、NameNode 记录操作日志,更新滚动日志。
4、NameNode 在内存中对数据进行增删改查。
3)Fsimage
3.1.Fsimage 的作用
Fsimage 保存了最新的元数据检查点,在 HDFS 启动时加载 Fsimage 的信息,包含了整个 HDFS 文件系统的所有目录和文件的信息。
-
对于文件来说包括了数据块描述信息、修改时间、访问时间等。
-
对于目录来说包括修改时间、访问权限控制信息(目录所属用户,所在组)等。
3.2.FSimage 的文件信息查看
使用命令:hdfs oiv
cd /export/servers/Hadoop-2.6.0-cdh5.14.0/HadoopDatas/namenodeDatas/current
hdfs oiv -i fsimage_0000000000000000864 -p XML -o hello.xml
4)Edits
4.1.Edits 的作用
Editlog 主要是在 NameNode 已经启动情况下对 HDFS 进行的各种更新操作进行记录,HDFS 客户端执行所有的写操作都会被记录到 Editlog 中。
4.2.Edits 的文件信息查看
查看命令:hdfs oev
cd /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/edits/current
hdfs oev -i edits_0000000000000000865-0000000000000000866 -o myedit.xml -p XML
5)元数据信息目录的配置
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>