hbase中的region

HBase 基本概念
1、region
region 是部分数据,所以是所有数据的一个自己,但region包括完整的行,所以region 是行为单位 表的一个子集。
每个region 有三个主要要素:
它所属于哪张表
它所包含的的第一行(第一个region 没有首行)
他所包含的最后一行(末一个region 没有末行)
当表初写数据时,此时表只有一个region ,当随着数据的增多,region 开始变大,等到它达到限定的阀值大小时,变化把region 分裂为两个大小基本相同的region,
而这个阀值 就 是 storefile 的设定大小(参数:hbase.hregion.max.filesize 新版本默认10G ) ,在第一次分裂region之前,所有加载的数据都放在原始区域的那台服务器上,随着表的变大
region 的个数也会相应的增加,而region 是Hbase集群分布数据的最小单位。
(但region 也是由block组成,具体这个block和hdfs block什么样的关系后面再说, region是属于单一 的regionserver,除非这个regionserver 宕机,或者其它方式挂掉,再或者执行balance时,才可能会将这部分region的信息转移到其它机器上。 )
* 这也就是 为什么region比较少的时候,导致region分配不均,总是分派到少数的节点上,读写并发效果不显著,这就是hbase 读写效率比较低的原因。
2、加锁
HBase的锁 是行锁,无论对行进行访问的事物有多少列,那对此行的更新都会是原子操作,要么成功,要么失败,不会存在部分成功的情况。这就说明,如果只更新一个行1000个列
中的 一个列,那也会对正行加锁。
3、Hbase元数据表
HBase内部维护着两个元数据表,分别是-ROOT- 和 .META. 表 他们分别维护者当前集群所有region 的列表、状态和位置。-ROOT-表包含.META.表的region 列表,因为.META.
表 可能会因为超过region的大小而进行分裂,所以-ROOT-才会保存.META.表的region索引,-ROOT-表是不会分裂的 。而.META. 表中则 包含所有用户region(user-space region)
的列表。表中的项使用region 名作为键。region名由所属的表名、region的起始行、创建的时间 以及对其整体进行MD5 hash值。
比如:
award_week_2013,201311:170100626,1371697714559.f7f37b98c01f68b7b5cc6c1c3734a666
|–表名————-|—–起始行———|–创建时间戳—|—-整体进行MD5 hash 值————|
由此我们联想到 表scan 的过程中如果加了 STARTROW 和 ENDROW 的属性后,查找是很迅速的,就是因为根据给定rowkey从.META.表中 找到所在的region,然后再从
region去查找。
这个表

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值