问题导入
在hdfs中,文件是被划分了一堆堆的block块,那如果文件很大、以及文件很多,Hadoop是如何记录和整理文件和block块的关系呢?
答案就在于NameNode。
edits文件,fsimage文件
文字演示:
NameNode基于一批edits和一个fsimage文件的配合 完成整个文件系统的管理和维护。
edits文件,是一个流水账文件,记录了hdfs中的每一次操作,以及本次操作影响的文件其对应的block。
将全部的edits文件,合并为最终结果,即可得到一个FSImage文件。
NameNode基于edits和FSImage的配合,完成整个文件系统文件的管理。
视频演示:
视频演示
NameNode元数据管理维护
1. 每次对HDFS的操作,均被edits文件记录
2. edits达到大小上线后,开启新的edits记录
3. 定期进行edits的合并操作
如当前没有fsimage文件, 将全部edits合并为第一个fsimage
如当前已存在fsimage文件,将全部edits和已存在的fsimage进行合并,形成新的fsimage
4. 重复123流程
元数据合并控制参数
对于元数据的合并,是一个定时过程,基于:
dfs.namenode.checkpoint.period,默认3600(秒)即1小时
dfs.namenode.checkpoint.txns,默认1000000,即100W次事务
只要有一个达到条件就执行。
检查是否达到条件,默认60秒检查一次,基于:
dfs.namenode.checkpoint.check.period,默认60(秒),来决定
SecondaryNameNode的作用
对于元数据的合并,还记得HDFS集群有一个辅助角色:SecondaryNameNode吗?
没错,合并元数据的事情就是它干的
SecondaryNameNode会通过http从NameNode拉取数据(edits和fsimage)
然后合并完成后提供给NameNode使用。