org.apache.hadoop.hdfs.server.namenode.BlocksMap.BlockInfo

    描述:block元数据的内部类。Block属于哪些DataNodes

    INodeFile          inode;文件节点在NameNode中的映射。

    Object[] triplets;文件的块列表。该数组包含了DataNode的引用。triplets[3*i]存放的DatanodeDescriptor。

                           triplets[3*i+1]存放的是指向前向的blocks,triplets[3*i+2]存放的是下面的Blocks引用。

   

    BlockInfo(Block blk, int replication):赋值给triplets=new Object[3*replication]

    方法:

    DatanodeDescriptor getDatanode(int index):

        返回DatanodeDescriptor,triplets[3*index]

    BlockInfo getPrevious(int index):

        返回BlockInfo,triplets[index*3+1]

    BlockInfo getNext(int index):

        返回BlockInfo,triplets[index*3+2]

    void setDatanode(int index, DatanodeDescriptor node):设置block属于哪个DataNode。

    boolean removeNode(DatanodeDescriptor node):找到节点、将最后节点替换node。

 

org.apache.hadoop.hdfs.server.namenode.BlocksMap

    该类维护了从block到其元数据的一个映射。

    int capacity:跟踪HashMap容量增长。

    final float loadFactor:加载因子。

    Map<BlockInfo, BlockInfo> map:存放所有Block信息。