HDFS官网翻译——HDFS 架构指南(四)

网友投稿 657 2022-05-28

文件系统元数据的持久性

HDFS命名空间存储在NameNode结点中。NameNode使用Editlog记录文件系统元数据的每一次变更。Editlog是一个事务型日志。例如,HDFS创建新文件时会在Editlog文件中插入一条记录。类似地,文件副本数的变更也会引起在Editlog文件中记录一条日志。NameNode结点使用本地文件系统存储Editlog文件。FsImage文件中存储了文件系统命令空间,包含文件与文件系统属性的map块。FsImage作为NameNode结点本地的一个文件被存储。

HDFS官网翻译——HDFS 架构指南(四)

NameNode将文件系统命名空间的镜像、文件块map存储在内存中。这个关键的元数据项被设计得非常紧凑,例如一个拥有4GB RAM的NameNode足以支持大量的文件和目录。当NameNode结点启动的时候,它从磁盘中读取FSImage和Editlog文件,将Editlog中的事件读取后执行,然后刷新FSImage到磁盘(其实就是先获取FsImage中NameNode的状态,然后逐一读取EditLog中文件事件记录一一执行,之后将最新的NameNode状态刷回到FSImage文件中)。之后将EditLog文件丢弃,因为该文件中记录的事件已经全部被使用了(记录在持久化文件FSImage中了)。上述过程就叫做CheckPoint。在当前的版本中,只有NameNode启动时才会出现一个checkpoint。将来的功能会支持间隔性的checkpoint。

DataNode结点将HDFS数据存储在本地文件系统中。DataNode不感知HDFS文件,而是将特定文件分割为多块HDFS数据块存入本地文件系统。DataNode文件不能存放在同一个目录,它使用启发式方法(笔者也不清楚具体是什么)来确定每个目录的最佳文件数量,并适当地创建子目录。在同一个目录中创建所有本地文件不是最佳选择,因为本地文件系统可能无法有效地支持单个目录中的大量文件。当DataNode启动时,它扫描本地文件系统,生成与每个本地文件对应的所有HDFS数据块的列表,并将这个报告发送给NameNode——Blockreport。

Hadoop 机器翻译

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:分布式RPC框架Dubbo实现服务治理实现示例:集成Kryo实现高速序列化,集成Hystrix实现熔断器
下一篇:华为云上云迁移工具案例实践:阿里云迁移到华为云
相关文章