hadoop3.x:FsImage(镜像文件)、Edits(编辑日志)作用

NameNode中的 元数据 与 内存

由于经常需要进行随机访问 nn 中的 元数据,还要响应客户请求,所以,元数据需要存放在内存中

缺点

如果只存在内存中,一旦断电,元数据丢失,整个集群就无法工作了

解决

提出 FsImage

NameNode中的元数据 与 FsImage

NameNode内存中元数据 写入到磁盘中,就是 Fsimage文件(镜像文件)

HDFS格式化时都会产生一个空的fsimage文件

所在路径:hadoop1的 /program/hadoop-3.0.3/data/tmp/dfs/name/current/ 目录下

缺点

在内存中的元数据更新时,如果同时更新 FsImage,就会导致效率过低,但如果不更新,就会不一致,一旦NameNode节点断电,就会产生数据丢失。

解决

提出 Edits

NameNode中的元数据 与 Edits

Edits文件(编辑日志)作用:记录客户端更新元数据信息的每一步操作(可通过Edits运算出元数据)。在文件尾部进行追加,所以效率很高

当元数据有更新或者添加元数据时,修改内存中的元数据,并追加到 Edits 文件中。这样,一旦NameNode节点断电,可以通过 FsImage 和 Edits 的合并,恢复元数据

所在路径:hadoop1的 /program/hadoop-3.0.3/data/tmp/dfs/name/current/ 目录下

缺点

但是,如果长时间添加数据到 Edits 中,会导致该文件数据过大,效率降低,而且一旦断电,恢复元数据需要的时间过长。

解决

通过 SecondaryNameNode 解决

详见:hadoop3.x:SecondaryNameNode(2NN)工作机制

参考文章:
https://cloud.tencent.com/developer/article/1887713
https://blog.csdn.net/he15936938636/article/details/95246440


原文出处:/show_1IX3tJAkf0lx.html