BlocksMap结构

之前看了HDFS代码,做了一些整理,陆续贴上来,Namenode中最重要的结构是Namespace和BlocksMap,先把BlocksMap写一下。

BlocksMap里面最重要的一个结构是BlocksInfo,先来看一下BlocksInfo
1. Class BlocksInfo extends Block
Block类有三个变量,分别是long blockId; 每个block的id值,唯一的
long numBytes; block的大小
long generationStamp; 时间戳,在修改和append有用
BlockInfo在Block的基础上加入了INodeFile inode; 代表此block对应文件INodeFile
Object[] triplets; 三元组结构,其结构如下

[img]http://dl.iteye.com/upload/attachment/435032/c5f90749-95e8-3877-bd45-e49fd59772b4.bmp[/img]


其中,对于副本个数为replica的三元组,其i*replica对应的是该block对应的Datanode对象,保存了其Datanode位置的信息,i*replica+1和i*replica+2为该block对应的Datanode对象上面其他block对象,即形成了一个链表结构。三元组是为了减少内存消耗。
下面是BlockInfo中的重要方法:
1) BlockInfo(Block blk, int replication)
构造函数,设定该blockInfo对象的block属性,同时根据设定的replication对三元组初始化。
2) DatanodeDescriptor getDatanode(int index)
获得三元组中对应副本的Datanode对象,使用的方法是
DatanodeDescriptor node = (DatanodeDescriptor)triplets[index*3];
3) BlockInfo getPrevious(int index)
获得该副本所在Datanode上面前一块BlockInfo对象(链表结构)
方法是:
BlockInfo info = (BlockInfo)triplets[index*3+1];
4) BlockInfo getN
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值