一、文件系统目录树与FSDirectory类

最近在研究HDFS源码,个人感觉很难,头发都快要掉光了O__O "…

一、文件系统目录树 (HDFS第一关系)

HDFS的目录和文件在内存中是以一棵树的形式存储的,这个目录树是由NameNode维护的,NameNode会修改这个树形结构以对外提供添加、删除文件等操作。文件系统目录树还保存着HDFS文件与数据块的对应关系。

不管是文件还是目录,在文件系统目录树中都被看作是一个INode节点。如果是目录,则其对应的类是INodeDirectory;如果是文件,则其对应的类是INodeFile。INodeDirectory中包含一个成员集合变量children,如果该目录下有子目录或者文件,其子目录或文件的INode引用就会被保存在children集合中。HDFS通过这种方式维护整个文件系统的目录结构。

INode是抽象类,保存了HDFS目录和文件的所有共同属性,包括当前节点的父节点的INode对象的引用、文件、目录名、用户组、访问权限等。需要注意的是,INode类的设计采用了模板模式。INode类定义的方法多为2个,一个是final的接口方法,用于规范接口的调用;另一个是abstract抽象方法,抽象方法留给子类具体实现。INode类中只有一个字段,就是parent,表名当前INode的父目录。

INodeWithAdditionalFields类定义了id、name、permission等字段,并覆盖了INode抽象方法。其中permission字段是64位的long类型的,保存用户信息、用户组信息和权限信息。HDFS中用户名和用户标识的对应关系、用户组名和用户组标识的对应关系都保存在SerialNumberManager类中,通过SerialNumberManager类,名字节点不需要在INode

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值