学习Hadoop官方文档之 Hadoop文件系统元数据的持久性与运作机制

NameNode中EditLog与FsImage文件的工作机制

EditLog和FsImage存储

HDFS名称空间由NameNode存储。NameNode使用名为EditLog的事务日志来持久记录元数据在本次集群启动后发生的所有更改操作。
例如,在HDFS中创建一个新文件会导致NameNode向EditLog中插入一条记录,指出这一点。同样,更改文件的复制因子会导致将新记录插入到EditLog中。NameNode使用其本地主机OS文件系统中的文件来存储EditLog。
整个文件系统名称空间(包括块到文件和文件系统属性的映射)存储在名为FsImage的文件中。FsImage也作为文件存储在NameNode的本地文件系统中。

NameNode检查点 Checkpoint

当NameNode启动时,它从磁盘读取FsImage和EditLog,将EditLog中的所有事务应用到FsImage的内存中表示,并将此新版本刷新到磁盘上的新FsImage中。它可以截断旧的EditLog,因为它的事务已经被应用到持久的FsImage。这个过程被称为检查点。
在当前的实现中,只有在NameNode启动时才会出现检查点。正在开展工作以支持不久的将来定期检查点。

DataNode

Block块存储

DataNode将HDFS数据存储在本地文件系统中的文件中。
DataNode不存储有关HDFS名称空间相关的内容,它将每个HDFS数据块存储在本地文件系统中的单独文件中。
DataNode不会在同一目录中创建所有文件。相反,它使用启发式来确定每个目录的最佳文件数量并适当地创建子目录。在同一目录中创建所有本地文件并不是最佳选择,因为本地文件系统可能无法有效地支持单个目录中的大量文件。这样可以保证高并发读取文件和大吞吐量。

DataNode块报告 Blockreport

当DataNode启动时,它扫描其本地文件系统,生成与每个本地文件相对应的所有HDFS数据块的列表,并将此报告发送给NameNode。

参考:
[1] The Persistence of File System Metadata
http://hadoop.apache.org/docs/r2.7.5/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html#The_Persistence_of_File_System_Metadata

你可能感兴趣的:(【大数据】➣,Hadoop,Hadoop官方文档学习专栏)