您的位置:首页 > 运维架构

Hadoop源码分析FSNamesystem几个重要的成员变量

2012-09-27 00:15 411 查看
FSNamesystem中有几个非常重要的变量,对于理解NameNode的实现具有重要意义。下面,我们看一下这几个变量和他的作用。

lblocksMap:blocksMap是类BlocksMap的实例,其代表了Block→{INode、datanodes}的映射。具体代表了每一个Block在哪一个DataNode上存储。
datanodeMap:datanodeMap是类NavigableMap的实例,代表了datanode→block之间的映射关系。该map的key是StorageID,value是DatanodeDescriptor,即<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:corruptReplicas是CorruptReplicasMap的一个实例。corruptReplicas保存了文件系统中所有的损坏block。注意,只有一个block的所有备份存储都损坏才认为该block是损坏的。其保存的形式如下,一个block和所有保存该block的datanode,Block→TreeSet<DatanodeDescriptor>
host2DataNodeMap:host2DataNodeMap是类Host2NodesMap的实例,它保存了主机名到datanode之间的映射关系,即ip:port→DatanodeDescriptor的映射关系。
dir:dir是FSDirectory的实例,他里面包含了INodeFile和INodeDirectory的层次结构。INodeFile和INodeDirectory分别对应硬盘上的文件和目录。每一个INodeFile都包含了该文件所拥有的所有的数据块,即dir保存了file→blocks的映射。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: