[计算机]HDFS文件系统结构解析

上传人:豆浆 文档编号:33383969 上传时间:2018-02-15 格式:DOC 页数:5 大小:206.50KB
返回 下载 相关 举报
[计算机]HDFS文件系统结构解析_第1页
第1页 / 共5页
[计算机]HDFS文件系统结构解析_第2页
第2页 / 共5页
[计算机]HDFS文件系统结构解析_第3页
第3页 / 共5页
[计算机]HDFS文件系统结构解析_第4页
第4页 / 共5页
[计算机]HDFS文件系统结构解析_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《[计算机]HDFS文件系统结构解析》由会员分享,可在线阅读,更多相关《[计算机]HDFS文件系统结构解析(5页珍藏版)》请在金锄头文库上搜索。

1、HDFS 文件系统结构解析NameNode 节点是就是 HDFS 的大脑。想了解 HDFS 文件系统,必须了解大脑结构。 咱们就从 NameNode 节点开始。NameNode 类中,关于 HDFS 文件系统的存储和管理都交给了 FSNamesystem 负责。下面介绍一下FSNamesystem 的逻辑组成和类图。 1. FSNameSystem 层次结构 一些概念 INode: 它用来存放文件及目录的基本信息:名称,父节点、修改时间,访问时间以及 UGI 信息等。 INodeFile: 继承自 INode,除 INode 信息外,还有组成这个文件的 Blocks 列表,重复因子,Block

2、 大小 INodeDirectory:继承自 INode,此外还有一个 INode 列表来组成文件或目录树结构 Block(BlockInfo):组成文件的物理存储,有 BlockId,size ,以及时间戳 BlocksMap: 保存数据块到 INode 和 DataNode 的映射关系 FSDirectory:保存文件树结构,HDFS 整个文件系统是通过 FSDirectory 来管理 FSImage:保存的是文件系统的目录树 FSEditlog: 文件树上的操作日志 FSNamesystem: HDFS 文件系统管理 这些概念之间的层次关系: 我们都知道,在 NameNode 内存中存在

3、两张很重要的映射表: 1. 文件系统的命名空间(文件目录树) 主要是 文件和 Block 映射关系 (保存在 FSDirectory) 2. Block 和 INodeFile & DataNode 的映射关系 (保存在 FSNamesystem) 在上图中,左边黑线部分是 1 数据结构的层次关系;红线部分是 2 关系的层次结构 (其中 block & DataNode 这个共用) 下面详细的介绍上图所表示的关系: 文件系统 FSNamesystem FSNamesystem 主要有两个对象:文件系统(FSDirectory)根节点 rootDir 和 BlocksMap 映射表 (Block

4、 - INode, datanodes, self ref ) 文件系统目录 FSDirectory 保存文件目录结构(INodeDirectory 树),实现 FSImage 和 FSEditLog 操作实现。 INode ( INodeFile & INodeDirectory ) 在 HDFS 中,无论目录还是文件,都是 INode。INode 有两个派生类 INodeFile 和 INodeDirectory。 INodeFile 是 INode 文件类,INodeDirectory 是 INode 目录类。每一 INodeDirectory 孩子节点都是由INodeDirectory

5、 目录或 INodeFile 文件列表构成。这样就形成了一棵 INode 树形结构。 NameNode 内存中保存着 HDFS 整个文件系统形成的树,这棵树保存在 FSDirectory 对象内。 Block & BlocksMap & BlockInfo HDFS 物理存储单元是 Block(缺省的 Block 大小为 64M),每个 Block 会有几个副本( 缺省是 3 个),这些 Block 都是存储在不同数据节点上的。映射关系保存在 BlocksMap。 Block & INodeFile 每个 INodeFile 都有一个 Block 列表组成。每一个 block 有多个副本 (缺

6、省 3 个副本), 各副本保存在不同的数据节点上。 这样在文件与 Block 和 DataNode 之间形成一个映射关系表。这张关系表就保存在 FSDirectory 对象 . FSImage & FSEditlog(FSDirectory) 由于目录树(FSDirectory)在 NameNode 内存中保存,机器也有掉电的时候。若只保存在内存那势必会造成数据的丢失。因此,系统会周期性的保存文件目录树到 NameNode 本地文件系统,生成 FSImage。主要由 FSImage和 FSEditLog,这两个类负责目录树持久化。 当 HDFS 系统非常庞大时,FSImage 也会非常大,这样

7、不能文件系统发生任何操作时,就更新到 FSImage,所以一段时间内文件系统的操作日志会记录到 FSEditLog。到一定时间会把操作日志 FSEditLog 同步到 FSImage,这样就形成完整的文件目录树。 2. FSNameSystem 主要类关系图 这个类图可以分成三个部分 Bock 相关的部分(BlocksMap & BlockInof & Block) INode 相关的部分 (INode & INodeDirectory & INodeFile & INodeDirectoryWithQuota) FSImage & FSEditLog (Storage & StorageInfo) 其中 BlockInfo 是 Block 的加强类,增加了 INodeFile 的引用和 DataNode 列表 INodeFirectoryWithQuota 是 INodeDirectory 的增强类,增加了 Quota 限制功能 从层次关系图和类图中,可以看出 FSNamesystem 中各数据结构之间的关系。了解 FSNamesystem, 那么 HDFS的文件系统就了解了 90%。 my email: hadoop123 at gmail dot com

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号