HDFS的存储结构以及操作流程简单总结

本文简要总结了HDFS的NameNode数据结构,包括物理结构(VERSION、edits、fsimage、fstime文件)和逻辑结构(FSDirectory、BlocksMap、CorruptReplicationMap等)。同时,介绍了DataNode的物理数据结构(当前目录current的构成)和逻辑结构。还概述了HDFS中的协议接口,如ClientProtocol、DataNodeProtocol、NameNodeProtocol。最后,提到了读写数据的基本流程。
摘要由CSDN通过智能技术生成

一、NameNode数据结构

1、物理结构
${dfs.name.dir}/current/{VERSION,edits,fsimage,fstime}

dfs.name.dir是一个目录列表,存储每个目录的镜像。VERSION文件是Java属性文件,包含运行HDFS的版本信息。

edits,是编辑日志文件。当客户断执行写操作的时,NameNode首先会在编辑日志中写下记录,并在内存中保存一个文件系统元数据,这个描述符会在编辑日志有了改动后更新。内存中的元数据用来提供读数据请求服务。

编辑日志会在每次成功操作之后,且成功代码尚未返回给客户端之前进行刷新和同步。对于要写入多个目录的操作,该写入流要刷新和同步到所有的副本上,这就保证了操作不会因故障丢失数据。

fsimage 是一个二进制文件,当中记录了HDFS中所有文件和目录的元数据信息,以及文件中块的相关信息

2、逻辑结构
a、NameNode加载FsImage到内存后,形成一个目录树的结构(FSDirectory,INode,INodeFile<BlockInfo[]>)
b、Datanode通过心跳,上报block信息,在NameNode中形成BlocksMap(Block-->DataNode的对应关系)
c、NameNode分配块到DataNode,在写文件块的过程中,出现错误,那么会由client或DataNode上报给NameNode,表示该块失效。NameNode保存在CorruptReplicationMap中
d、在DataNode处于退役阶段、离开安全模式等阶段时,需要检查该DataNode的blocks的数量是否达到复制因子的要求,没有则加入需要复制的请求队列UnderReplicatedBlocks<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值