首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

HDFS文件系统源码小结

2014-01-08 
HDFS文件系统源码总结??FSNameSystem层次结构?INode:??它用来存放文件及目录的基本信息:名称,父节点、修改

HDFS文件系统源码总结

??FSNameSystem层次结构?INode:??它用来存放文件及目录的基本信息:名称,父节点、修改时间,访问时间以及UGI信息等。
INodeFile:?继承自INode,除INode信息外,还有组成这个文件的Blocks列表,重复因子,Block大小
INodeDirectory:继承自INode,此外还有一个INode列表来组成文件或目录树结构
Block(BlockInfo):组成文件的物理存储,有BlockId,size?,以及时间戳
BlocksMap:?保存数据块到INode和DataNode的映射关系
FSDirectory:保存文件树结构,HDFS整个文件系统是通过FSDirectory来管理
FSImage:保存的是文件系统的目录树
FSEditlog:??文件树上的操作日志
FSNamesystem:?HDFS文件系统管理??概念之间的层次关系:

HDFS文件系统源码小结

??FSNameSystem?主要类关系图

HDFS文件系统源码小结

这个类图可以分成三个部分
Bock相关的部分(BlocksMap?&?BlockInof?&?Block)?
INode相关的部分(INode?&?INodeDirectory?&?INodeFile?&?INodeDirectoryWithQuota)?
FSImage?&?FSEditLog?(Storage?&?StorageInfo)?

其中
BlockInfo是Block的加强类,增加了INodeFile的引用和DataNode列表
INodeFirectoryWithQuota?是INodeDirectory的增强类,增加了Quota限制功能从层次关系图和类图中,可以看出FSNamesystem中各数据结构之间的关系。了解FSNamesystem,?那么HDFS的文件系统就了解了90%。???一下为其他重要信息说明:?1.2.1、元数据节点文件夹结构

HDFS文件系统源码小结

  • VERSION文件是java?properties文件,保存了HDFS的版本号。???

    layoutVersion是一个负整数,保存了HDFS的持续化在硬盘上的数据结构的格式版本号。?

    namespaceID是文件系统的唯一标识符,是在文件系统初次格式化时生成的。?

    cTime此处为0?

    storageType表示此文件夹中保存的是元数据节点的数据结构。

    namespaceID=1232737062

    cTime=0

    storageType=NAME_NODE

    layoutVersion=-18

    ?

    1.2.2、文件系统命名空间映像文件及修改日志

    HDFS文件系统源码小结

    1.2.3、从元数据节点的目录结构

    HDFS文件系统源码小结

    1.2.4、数据节点的目录结构

    HDFS文件系统源码小结

    • 数据节点的VERSION文件格式如下:

      namespaceID=1232737062

      storageID=DS-1640411682-127.0.1.1-50010-1254997319480

      cTime=0

      storageType=DATA_NODE

      layoutVersion=-18

      ?

      • blk_<id>保存的是HDFS的数据块,其中保存了具体的二进制数据。?

      • blk_<id>.meta保存的是数据块的属性信息:版本信息,类型信息,和checksum?

      • 当一个目录中的数据块到达一定数量的时候,则创建子文件夹来保存数据块及数据块属性信息。

        ?

        二、数据流(data?flow)2.1、读文件的过程

        HDFS文件系统源码小结

        2.2、写文件的过程

        HDFS文件系统源码小结

热点排行