HDFS命名空间保存在NameNode中,NameNode使用一个事务日志(EditLog)保存对系统元数据的所有改动。
整个文件系统的命名空间,包括文件和块之间的映射、文件系统属性等都保存在一个叫FsImage文件中。
FSImage 是HDFS核心数据结构之一,从构造函数可以看出主要分为三部分:
NNStorage、FSEditLog和NNStorageRetentionManager
三个组件的主要功能如下所述:
NNStorage is responsible for management of the StorageDirectories used by the NameNode.
FSEditLog maintains a log of the namespace modifications.
The NNStorageRetentionManager is responsible for inspecting the storage directories of the NN and enforcing a retention policy on checkpoints and edit logs.
HDFS FSImage 类代码还是比较多的 大约有1500+行 首先浏览一下outline看看可以分为哪几部分?
目测可分为Format、Upgrade&Rollback、EditLog相关、FSImage相关、NameSpace和CheckPoint这几方面。
loadFSImage方法在NameNode启动时触发,用来加载目录中最新的image文件,与editlog合并之后作为NameNode 内存映像。
来源:oschina
链接:https://my.oschina.net/u/137850/blog/409909