HDFS分析(一)

这里将给出HDFS一些主要类的关系图:

 

NameNode后面的一些类的关系:

 

NameNode背后的类图:

 

 

DataNode存储相关的类图:

 

Block:HDFS内部以Block的形式保存数据,Block的大小比较大,默认64M。

BlockInfo:继承了Block,额外包含INodeFile信息,这个在namenode是持久化在磁盘里面的,同时包含了Block所属的DatanodeDescriptor信息以及Block的前后Block信息

BlockMap:定义了一个Map结构,是Block到BlockInfo的映射,Map的接口是自定义的轻量级接口,没有使用标准的java.util.Map接口

INode:在NameNode中表示文件的基础类

INodeFile:代表一个文件,里面包含了一系列的BlockInfo的信息

INodeFileUnderConstruction:代表有Block数据写入的InodeFile,包含了最后一个Block所属的Datanode的数据

INodeDirectory:表示一个文件目录,一个目录下面可以有数个INodeFile

INodeDirectoryWithQuota:继承于INodeDirectory,额外带有一些容量信息

 

StorageInfo:表示存储信息的基本类

Storage:继承了StorageInfo,具体的内容是存储在VERSION文件中,存储可以分成多个目录,每个目录可以有独立的VERSION文件,目录用StorageDirectory表示

FSImage:继承了Storage,在NameNode中使用,对应在磁盘的存储可以认为是fsimage文件

DataStorage:继承了Storage,在DataNode中使用

FSEditLog:在NameNode中使用,对应在磁盘的存储可以认为是edits文件

FSDirectory:保存了NameNode存储的状态,处理从磁盘取得或者持久化到磁盘(INodeFIle==>Block的映射)的操作,并且记录这些操作的日志
FSNamesystem:NameNode的所有文件和内存操作的封装,这些操作只在NameNode内部使用

FSDatasetInterface:DataNode底层涉及Block存储的一个接口
FSDataset:实现了FSDatasetInterface,管理Block的存储
SimulatedFSDataset:在伪分布式配置下的FSDatasetInterface实现

FSVolume:一个FSVolume对应一个DataStorage,可以认为是一个DataNode的存储目录的抽象
FSVolumeSet:FSVolume的集合,一个Datanode可以有多个FSVolume
FSDir:在HDFS中,DataNode中一个文件下面的Block数量是有限的,所以文件目录是有层次的,FSDir对应一个目录

ActiveFile代表一个正在被写入的文件;DatanodeBlockInfo封装了block的文件和FSVolume;BlockAndFile:block和block的文件关联类

posted @ 2012-03-26 13:19  nod0620  阅读(1295)  评论(0编辑  收藏  举报