FSNamesystem几个重要的成员变量

FSNamesystem中有几个非常重要的变量,对于理解NameNode的实现具有重要意义。下面,我们看一下这几个变量和他的作用。

lblocksMap:blocksMap是类BlocksMap的实例,其代表了Block→{INodedatanodes}的映射。具体代表了每一个Block在哪一个DataNode上存储。

datanodeMap:datanodeMap是类NavigableMap的实例,代表了datanode→block之间的映射关系。该mapkeyStorageIDvalueDatanodeDescriptor,即<String, DatanodeDescriptor>。该Map一般在下面三种情况下会被修改:

1.added to the map if it is a new storage id

2.Updated with a new datanode started as a replacement for the old one with the  same storage id

3.Remove if and only if an existing datanode is restarted to serve a different  storage id

corruptReplicas:corruptReplicasCorruptReplicasMap的一个实例。corruptReplicas保存了文件系统中所有的损坏block。注意,只有一个block的所有备份存储都损坏才认为该block是损坏的。其保存的形式如下,一个block和所有保存该blockdatanodeBlock→TreeSet<DatanodeDescriptor> 

host2DataNodeMap:host2DataNodeMap是类Host2NodesMap的实例,它保存了主机名到datanode之间的映射关系,即ip:port→DatanodeDescriptor的映射关系。

dir:dirFSDirectory的实例,他里面包含了INodeFileINodeDirectory的层次结构。INodeFileINodeDirectory分别对应硬盘上的文件和目录。每一个INodeFile都包含了该文件所拥有的所有的数据块,即dir保存了file→blocks的映射。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/91d9ef4be7f5351d19a149e3fa08ddae.html