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文件系统管理??概念之间的层次关系:
VERSION文件是java?properties文件,保存了HDFS的版本号。???
layoutVersion是一个负整数,保存了HDFS的持续化在硬盘上的数据结构的格式版本号。?
namespaceID是文件系统的唯一标识符,是在文件系统初次格式化时生成的。?
cTime此处为0?
storageType表示此文件夹中保存的是元数据节点的数据结构。
namespaceID=1232737062
cTime=0
storageType=NAME_NODE
layoutVersion=-18
?
1.2.2、文件系统命名空间映像文件及修改日志1.2.3、从元数据节点的目录结构1.2.4、数据节点的目录结构数据节点的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、读文件的过程2.2、写文件的过程