2021SC@SDUSC HBase(五)项目代码分析——Region机制(二)之Region分区

2021SC@SDUSC

一、Region概念

详细内容:Region相关概念.

二、Region大小

Region的大小是一个棘手的问题,需要考量如下几个因素:

  • Region是HBase中分布式存储和负载均衡的最小单元。不同Region分布到不同RegionServer上,但并不是存储的最小单元。
  • Region由一个或者多个Store组成,每个store保存一个columns family,每个Strore又由一个memStore和0至多个StoreFile 组成。memStore存储在内存中, StoreFile存储在HDFS上。
  • HBase通过将region切分在许多机器上实现分布式。也就是说,如果有16GB的数据,只分了2个region, 但有20台机器,有18台就浪费了。
  • region数目太多就会造成性能下降,现在比以前好多了。但是对于同样大小的数据,700个region比3000个要好。
  • region数目太少就会妨碍可扩展性,降低并行能力。有的时候导致压力不够分散。这就是为什么,向一个10节点的HBase集群导入200MB的数据,大部分的节点是idle的。
  • RegionServer中1个region和10个region索引需要的内存量没有太多的差别。

最好是使用默认的配置,可以把热的表配小一点(或者受到split热点的region把压力分散到集群中)。如果你的cell的大小比较大(100KB或更大),就可以把region的大小调到1GB。region的最大大小在hbase配置文件中定义:

<property>
    <name>hbase.hregion.max.filesize</name>
    <value>10 * 1024 * 1024 * 1024</value>
  </property>

说明:

  1. 当region中的StoreFile大小超过了上面配置的值的时候,该region就会被拆分,具体的拆分策略见下文。
  2. 上面的值也可以针对每个表单独设置,例如在hbase shell中设置:
 create 't','f'
disable 't'
alter 't', METHOD => 'table_att', MAX_FILESIZE => '134217728'
enable 't'

三、Region拆分策略

Region的分隔操作是不可见的,因为Master不会参与其中。
RegionServer拆分region的步骤是,先将该region下线,然后拆分,将其子region加入到META元信息中,再将他们加入到原本的RegionServer中,最后汇报Master。

自动拆分策略

ConstantSizeRegionSplitPolicy
IncreasingToUpperBoundRegionSplitPolicy
DelimitedKeyPrefixRegionSplitPolicy
KeyPrefixRegionSplitPolicy

hbase-2.x支持7种Region自动拆分的策略,类图如下:
region自动拆分策略类图
设置自动拆分策略的关键配置如下:

hbase.regionserver.region.split.policy
description: Region自动拆分的策略
default: 
    HBase-1.2.x: org.apache.hadoop.hbase.regionserver.IncreasingToUpperBoundRegionSplitPolicy
    HBase-2.x: org.apache.hadoop.hbase.regionserver.SteppingSplitPolicy
option: 
    org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy
    org.apache.hadoop.hbase.regionserver.ConstantSizeRegionSplitPolicy
    org.apache.hadoop.hbase.regionserver.IncreasingToUpperBoundRegionSplitPolicy
    org.apache.hadoop.hbase.regionserver.SteppingSplitPolicy
    org.apache.hadoop.hbase.regionserver.KeyPrefixRegionSplitPolicy
    org.apache.hadoop.hbase.regionserver.DelimitedKeyPrefixRegionSplitPolicy
    org.apache.hadoop.hbase.regionserver.BusyRegionSplitPolicy (HBase-2.x Only)

通过设置RegionSplitPolicy的实现类来指定拆分策略,以上是RegionSplitPolicy类的实现类

  public ChangeSplitPolicyAction(TableName tableName) {
   
    this.tableName = tableName;
    possiblePolicies = new String[] {
   
        IncreasingToUpperBoundRegionSplitPolicy.class.getName(),        ConstantSizeRegionSplitPolicy.class.getName(),
       DisabledRegionSplitPolicy.class.getName()
    };
    this
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值