导航

HDFS与LinuxFS

Posted on 2011-11-20 15:06  清风无尘  阅读(605)  评论(0)    收藏  举报

 

 


1.1 HDFS结构图

1.        数据块Block

       典型的Linux的数据块是4MHDFS的默认数据块是64M。一般存在3个备份。

2.        索引节点INodeFile

       LinuxFS每个文件以及目录都是由一个INode代表。

       HDFSINodeFile是目录树的单元,HDFS的目录树是在INode的集合上生成的。分为两种:

1)        指向一组Block,没有子INodeFile

2)        指向一组INodeFile

3.        目录项INodeDirectory

按照参考论文[1]来看,HDFS是没有目录项的。具体差别待补充

 

       HDFS设计的侧重点:

1)        节约NameNode的内存空间,HDFS没有Dentry

2)        节约NameNode的外存空间,INodeDirectory没有以一组Block的形式存储在外存。

数据块映射

LinuxFile用户空间与物理空间

       从图中可以看出,其存在与一个强依赖的关系。

HDFS用户空间与物理空间

       上图可以看出,减弱了物理层与用户层的依赖程度。HDFS的物理存储介质是一组DataNode,而不是某台确定的计算机,文件与DataNode群之间的关系由系统来管理。

       从左往右是文件存储的方式,逆向的是文件被读取的时候的过程

Map1: <Block INodeFile>

Map2: <Block DataNode>

       这两组映射封装在BlocksMap<Block BlockInfo>,以哈希映射实现,作为描述Block的重要元数据Blockinfo封装了该Block相关的InodeDataNode

       Map3 <INode Block>Map1逆向),作为目录树的最底层存放在FSImage

Map4<DataNode Block>Map2逆向),DataNodeDescriptor中定义的BlockList

[1].   分布式文件系统HadoopHDFS与传统文件系统LinuxFS的比较与分析。