hbase region 拆分方式 热点问题 数据倾斜

链接:https://blog.csdn.net/qq_23160237/article/details/89249665
hbase中, region在数据量大到一定程度的时候,会进行拆分(最开始由一个变成二个),而拆分的方式有三种,包括预拆分、自动拆分、手动强制拆分。下面就来介绍介绍拆分的方式。

预拆分

预拆分(pre-splitting)就是在建表的时候就定义好了拆分点的 算法,所以叫预拆分。

预拆分一部分的作用能减少rowkey热点,另外一部分能减轻region切分时导致的服务不可用。
(1)Hex拆分点

在这里插入图片描述

上面这条命令的意思就是新建一个叫my_split_table的表,并根据 HexStringSplit拆分点算法预拆分为10个Region,同时要建立的列族叫 mycf。建完后用hbase shell看一下结果。执行以下命令查出所有10个 Region的信息:

在这里插入图片描述

可以看到已经建立的10个Region,由于输出信息太多,我只截取其 中关于每一个Region的起始rowkey和结束rowkey的信息给你们看,这10 个Region的范围分别是:

STARTKEY => ‘’, ENDKEY => ‘19999999’
STARTKEY => ‘19999999’, ENDKEY => ‘33333332’
STARTKEY => ‘33333332’, ENDKEY => ‘4ccccccb’
STARTKEY => ‘4ccccccb’, ENDKEY => ‘66666664’
STARTKEY => ‘66666664’, ENDKEY => ‘7ffffffd’
STARTKEY => ‘7ffffffd’, ENDKEY => ‘99999996’
STARTKEY => ‘99999996’, ENDKEY => ‘b333332f’
STARTKEY => ‘b333332f’, ENDKEY => ‘ccccccc8’
STARTKEY => ‘ccccccc8’, ENDKEY => ‘e6666661’
STARTKEY => ‘e6666661’, ENDKEY => ‘’

这就是你预定了拆分点后的Region

(2)手动指定拆分点

手动指定拆分点的方法就是在建表的时候跟上SPLITS参数,比如:

在这里插入图片描述

自动拆分

   拆分的策略有很多种,以下举例一个说明:ConstantSizeRegionSplitPolicy

早在0.94版本的时候HBase只有一种拆分策略。这个策略非常简单,从名字上就可以看出这个策 略就是按照固定大小来拆分Region。它唯一用到的参数是:

hbase.hregion.max.filesize ------------region的最大大小,默认10GB
当单个Region大小超过了10GB,就会被HBase拆分成为2个Region。 采用这种策略后的集群中的Region大小很平均。

在这里插入图片描述

手动拆分

除了预拆分和自动拆分以外,你还可以对运行了一段时间的Region 进行强制地手动拆分(forced splits)。方法是调用hbase shell的 split方法,比如:

在这里插入图片描述

推荐方案

一开始可以先定义拆分点,但是当数据开始工作起来后会出现热点 不均的情况,所以推荐的方法是:

(1)用预拆分导入初始数据。

(2)然后用自动拆分来让HBase来自动管理Region。

建议:不要关闭自动拆分。

备注

region自动拆分默认选择Region当中最大Store下的最大Storefile文件中的midkey,而midkey其实只是在通过HFile获取了这个文件之前记录好的数据。在自动触发Split操作的前提下,大部分的Split操作都伴随在Compaction操作之后进行的原因,在于可以对于Region中的文件进行合并,生成较大的StoreFile文件,以方便选择更好的SplitPoint。

注意:region的拆分与rowkey是否热点无关,假如原来rowkey是0000xxx - 9999xxx ,那么拆分后,一个reigon是0000xxx-5555xxx,另一个region是5555xxx - 9999xxx,那么原来集中的rowkey还是集中,跟rowkey热点无任何关联。

————————————————
版权声明:本文为CSDN博主「spark大数据玩家」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_23160237/article/details/89249665

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值