在对NameNode节点进行格式化时,调用了FSImage的saveFSImage()方法和FSEditLog.createEditLogFile()存储当前的元数据。Namenode主要维护两个文件,一个是fsimage,一个是editlog。作者:猫给这儿

fsimage :
保存了最新的元数据检查点,包含了整个HDFS文件系统的所有目录和文件的信息。对于文件来说包括了数据块描述信息、修改时间、访问时间等;对于目录来说包括修改时间、访问权限控制信息(目录所属用户,所在组)等。简单的说,Fsimage就是在某一时刻,整个hdfs 的快照,就是这个时刻hdfs上所有的文件块和目录,分别的状态,位于哪些个datanode,各自的权限,各自的副本个数等。
注意:Block的位置信息不会保存到fsimage,Block保存在哪个DataNode(由DataNode启动时上报)。
editlog :
主要是在NameNode已经启动情况下对HDFS进行的各种更新操作进行记录,HDFS客户端执行所有的写操作都会被记录到editlog中。
读取元数据:
启动NameNode节点时,又要从镜像和编辑日志中读取元数据。
写入元数据:
在NameNode运行时会将内存中的元数据信息存储到所指定的文件,即${dfs.name.dir}/current目录下的fsimage文件,此外还会将另外一部分对NameNode更改的日志信息存储到${dfs.name.dir}/current目录下的edits文件中。fs

本文介绍了Hadoop NameNode的元数据管理,包括fsimage和editlog的用途。fsimage存储文件系统的快照,editlog记录更新操作。SecondaryNameNode负责镜像备份和日志合并,防止NameNode因大量编辑日志而变得低效。通过定期合并,保持系统高效运行。
最低0.47元/天 解锁文章
699

被折叠的 条评论
为什么被折叠?



