加载中…
个人资料
furdaol
furdaol
  • 博客等级:
  • 博客积分:0
  • 博客访问:4,293
  • 关注人气:0
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

Hadoop-Block的相干分析.

(2011-07-20 00:16:14)
标签:

杂谈

1.1 Block

Block是HDFS中的最大约单位是对数据块的笼统,它穿越一个final long(blkid)来举行标识。一个Block具有三个longs,它们离别是block-id 、block length和generation stamp。Block名的款式是”blk”+blkid。穿越set和get等措施能够获得关于Block的id、name、len等消息。

static final long GRANDFATHER_GENERATION_STAMP = 0; 发生一个块的符号来预先解释要发生的STAMP。

GenerationStamp也是HDFS的一个大约元素,也是穿越一个long来举行标识的。GenerationStamp作用的猜想:当两个块举行比拟的时候,当它们的hashcode雷同时,便用GenerationStamp举行比拟。当然blkid是不可变的,而当Block的数据增长可能收缩的时候,其GenerationStamp就会发生改变(加1??)。

一个Block对应着两个文件,其中一个存数据,一个储藏元数据消息。它的元数据消息文件的款式如下:”blk_”+blkid+”_”+version.meta

和Block相干的类如下所示:

1.2 BlockCommand

此类定义了一个对DataNode下的Block垄断的一个号召集,它的重要作用是告诉DataNode所指定的一系列块是不可用的可能把这这些块复制到别的DataNode上去。

1.3 BlockListAsLongs

这个类供给了一个接口用来穿越long[]来拜会块的列表。

1.4 BlockMetadataHeader

此类用来管教DataNode数据块的元数据。一个Block的元数据的最重要局部即便它的CRC数据效验它占了5个字节。而它的版本号占了两个字节。

1.5 BlockMetaDataInfo

这个类是Block的一个子类,保留了一个块的元数据消息。

1.6 BlocksMap

这个类保留了从一个块到它的元数据的照射,一个块的元数据等闲包括它的INode和保留这个块的DataNode。

BlockInfo是BlocksMap中的一个内部类,它继承了Block,因而全面就能够把BlockInfo看作成一个Block。BlockInfo类中有一个triplets数组,其中triplets[3*i]指向了它的DatanodeDescriptor,而triplets[3*i+1]和triplets[3*i+2]离别是前一个和后一个块的引用。

this.triplets = new Object[3*replication]; //其中的replication等闲由INode中的getReplication()措施获得,replication是这个Block的复制因子。

从源代码private int ensureCapacity(int num)能够看出triplets的大小是能够改换的,同时从这段措施的注释中能够看到,triplets的空间的添置仅仅发生在用户手动的调剂复制因子时发生。

对于triplets中的引用指向问题如增加、剔除等等,大约上和双向链表的垄断措施是雷同的。当然增加和剔除垄断的triplets的DatanodeDescriptor都是一个统一个Datanode。

BlockMap的另外一个内部类是NodeIterator,它告终了Blockinfo的一个遍历器。不扶持remove。

问题1:这些Block为什么要利用一种链式构造,它有什么含义呢??

问题的解答,当NameNode向Datanode公布一个report时,它会发生一个分隔符,把管用的块和无效的块符号起来

一个DataNode上的Block链式构造如下所示:

1.7 BlocksWithLocations

这个类重要告终了一个BlockLocations的数组,它供给了管用的定制化的序列化和反序列化的措施,轮换了由RPC供给的数组序列化措施。其中的getDatanodes()措施的归来值为datanodeIDs,这就能阐明这个Block所在的Datanode的位置。然而,这段代码功能差,而且未曾必需这么混杂。你还能够用以下的措施来重写上面的代码:

全球变暖 我们能做些什么 一.

select 函数.

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有