Hadoop源码分析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的映射。


你可能感兴趣的:(String,File,存储)