vlambda博客
学习文章列表

【每日一题】HDFS文件系统中,Fsimage和Edit的区别?(水滴互助)

今天带来的是来自水滴互助的面试题:HDFS文件系统中,Fsimage和Edit的区别?

问题分析


考官主要考核你对Fsimage和Edit的理解,因此需要讲出Fsimage和Edit的概念和区别即可。

【每日一题】HDFS文件系统中,Fsimage和Edit的区别?(水滴互助)

核心问题回答


Fsimage镜像文件:是元数据的一个持久化的检查点,包含Hadoop文件系统中的所有目录和文件元数据信息,但不包含文件块位置的信息.文件块位置信息只存储在内存中,是在DataNode加入集群的时候,NameNode询问DataNode得到的,并且间断的更新。

Edits编辑日志:存放的是Hadoop文件系统的所有更改操作(文件创建,删除或修改),文件系统客户端执行的更改操作首先会被记录到Edits文件中。

相同点:
Fsimage和Edits文件都是经过序列化的,在NameNode启动时,它会将Fsimage文件中的内容加载到内存中,之后再执行Edits文件中的各项操作,使得内存中的元数据和实际的同步,存在内存中的元数据支持客户端的读操作,也是完整的元数据。

不同点:
当客户端对HDFS中的文件进行新增或者修改操作,操作记录首先被记入Edits日志文件中,当客户端操作成功后,相应的元数据会更新到内存元数据中.因为Fsimage文件一般都很大(GB级别的很常见),如果所有的更新操作都往Fsimage文件中添加,这样会导致系统运行的十分缓慢。

HDFS这种设计实现:一是内存中数据更新、查询快,极大缩短了操作响应时间;

二是内存中元数据丢失风险颇高(断电等),因此辅佐元数据镜像文件(Fsimage)+编辑日志文件(Edits)的备份机制进行确保元数据的安全。

大家如果想进行更深入的了解和学习,请关注勾叔谈大数据参与更多互动。


推荐阅读: