HDFS NameNode元数据的存储方式和工作机制

NameNode元数据的存储方式

元数据的存储方式在物理上是以内存+磁盘的形式存储的,是通过FsImage和Edits合并形成元数据

fsImage文件:HDFS文件系统的一个永久性检查点,其中包含HDFS文件系统的所有目录和文件inode的序列化信息。
Edits文件:存放HDFS文件更新操作的信息。客户端对HDFS执行的操作首先写入到Edits

在磁盘上 是以FsImage存储元数据
Edits进行追加操作,不进行计算,只记录过程
整合后的数据存储在FsImage上
在内存中存储 FsImage整合后的数据 + Edits追加的数据

Namenode启动时 就会将FsImage读入到内存,加载Edits中的更新操作,保证内存中的元数据是最新的,同步的,启动时已经将Edits 内的数据和FsImage进行合并

查看fsImage 文件

hdfs oiv -p 文件类型 -i镜像文件 -o 转换后文件输出路径
hdfs oiv -p XML -i fsimage_0000000000000000324 -o /opt/software/fsimage.xml

查看edits 文件

hdfs oev -p 文件类型 -i编辑日志 -o 转换后文件输出路径				
hdfs oev -p XML -i edits_inprogress_0000000000000000327  -o /opt/softwate/edit.xml

如果Edits追加操作过多,合并时会耗费很多时间,需要Secondary NameNode 进行工作。

NameNode工作机制

HDFS NameNode元数据的存储方式和工作机制_第1张图片
第一阶段

	 1. 第一次启动NameNode格式化后,会创建Edits和fsImage,不是第一次启动,就会将edits内容和fsImage的内容加载到内存中
	 2. 客户端对元数据进行增删改操作
	 3. Namenode会先将这些操作记录到edits_inprogress中。(记录操作日志,更新滚动日志)
	 4. NameNode在内存中对元数据进行增删改。

第二阶段: (2NN进行工作)

	1.Secondary NameNode询问NameNode是否需要CheckPoint。直接带回NameNode是否检查结果。
	2.Secondary NameNode请求执行CheckPoint。
	3.NameNode滚动正在写的Edits日志。
	4.将滚动前的edits和fsImage拷贝到Secondary NameNode。
	5.Secondary NameNode加载Edits和FsImage到内存,并合并。
	6.生成新的镜像文件fsimage.chkpoint。
	7.拷贝fsimage.chkpoint到NameNode。
	8.NameNode将fsimage.chkpoint重新命名成fsimage。

CheckPoint 时间设置:在hdfs-site.xml可修改参数
CheckPoint触发条件

1.定时时间到,SecondaryNameNode每隔一小时执行一次。
2.一分钟检查一次操作次数,当操作次数达到1百万时,触发CheckPoint,SecondaryNameNode执行一次

你可能感兴趣的:(HDFS,Hadoop,hdfs,hadoop,大数据)