学习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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值