NameNode节点是就是HDFS的大脑。想了解HDFS文件系统,必须了解大脑结构。 咱们就从NameNode节点开始。NameNode类中,关于HDFS文件系统的存储和管理都交给了FSNamesystem负责。下面介绍一下FSNamesystem的逻辑组成和类图。
1.
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文件系统管理
这些概念之间的层次关系:
我们都知道,在NameNode内存中存在两张很重要的映射表:
1. 文件系统的命名空间(文件目录树) 主要是 文件和Block映射关系 (保存在FSDirectory)
2. Block 和 INodeFile & DataNode的映射关系 (保存在FSNamesystem)
在上图中,左边黑线部分是1 数据结构的层次关系;红线部分是 2 关系的层次结构
(其中block & DataNode这个共用)