文章目录
前言
一、为什么需要2nn?
hdfs的元数据信息存储在NameNode中,每次对hdfs的文件进行操作,那么将会不断地访问元数据信息,如果全放内存或者全放磁盘有如下缺点
因此要将元数据信息备份在在磁盘里,生成fsimage镜像文件
如果每次对元数据的操作都要同步到fsimage(磁盘)中,则和原来没什么两样,同样的效率低下,因此引入edits文件,只对该文件做追加操作,追加操作元数据的信息,即使集群在使用的过程中发生了故障,启动时是需要将镜像文件和edits文件合并进入内存中即可恢复,同时不会产生读写过慢的现象。
在合并fsimage和edits文件是,如果使用NN去合并,可能会造成NN效率低下,因此专门引入2NN,来合并这两个文件,提高集群的工作效率。
流程图
注意
1.通常情况下,SecondaryNameNode每隔一小时执行一次。
[hdfs-default.xml]
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>3600s</value>
</property>
2.一分钟检查一次操作次数,3当操作次数达到1百万时,SecondaryNameNode执行一次。
<property>
<name>dfs.namenode.checkpoint.txns</name>
<value>1000000</value>
<description>操作动作次数</description>
</property>
<property>
<name>dfs.namenode.checkpoint.check.period</name>
<value>60s</value>
<description> 1分钟检查一次操作次数</description>
</property >
fsimage和edits
文件位置:
/opt/module/hadoop-3.3.1/data/dfs/name/current
(1) Fsimage文件:hdfs文件元数据的一个永久性的检查点
,其中包含hdfs文件系统的所有目录和文件inode的序列化信息。
(2)edits文件:存放hdfs文件系统的所有更新操作,文件系统客户端执行的所有写操作首先会被记录到edits文件中
(3)seen_txid文件保存的是一个数字,就是edits_的数字
查看fsimage文件
hdfs oiv 查看镜像文件
hdfs oiv -p XML -i fsimage_0000000000000000530 -o /home//howey/fsimage.xml
下载到桌面
sz /home//howey/fsimage.xml
hdfs oev查看edits文件
hdfs oiv -p 查看文件类型 -i 镜像文件 -o转换后文件的输出的文件
hdfs oev -p XML -i edits_0000000000000000105-0000000000000000453 -o /home//howey/edits_105.xml
下次开机启动如何确定和并哪些edits?
合并大于镜像文件编号后面的edits文件
2nn和nn相差edits_inprogress文件数据