最近在做hbase的读取优化工作,也优化了一些配置,这里着重讲一下我在配置hbase的region的大小的时候遇上的一些问题。
首先我知道在habse里面的的hbase-site.xml里面有这个配置,具体的如图所示:
这个hbase默认的是10g,我现在把他修改成1g,然后重启hbase,发现region的数目和大小都没有发生变化!!!我又去查阅资料,找到了一个相关帖子:
明白了,原来hbase的region的大小调节在0.94以前只要配置region大小的属性就好了,他就会按照配置的小进行split,但是!!在0.94之后,又加入了一个策略属性,hbase有三个spli的策略,具体的如下所示:
第一个(也是我要的):
ConstantSizeRegionSplitPolicy:按固定长度分割region,固定长度取值优先获取table的”MAX_FILESIZE” 值,若没有设定该属性,则采用在hbase-site.xml中配置的hbase.hregion.max.filesize值,在0.94版本中这个值的缺省值已经被调整为:10 * 1024 * 1024 * 1024L 也就是10G,网上很多关于 hbase.hregion.max.filesize 默认值 1G的文章应该都是基于0.92的hbase的
第二个:
IncreasingToUpperBoundRegionSplitPolicy:按照region数量累增划分region,该策略为Hbase 0.94默认使用的策略,采用该策略分割的region大小是不相等的,每次新region的大小随着region数量的增多而增大。
第三个:
KeyPrefixRegionSplitPolicy:指定rowkey前缀位数划分region,通过读取table的prefix_split_key_policy.prefix_length属性,该属性为数字类型,表示前缀长度,
在进行split时,按此长度对splitPoint进行截取。
我选定了第一个策略,具体如下:
配置好大小和策略,我又启动hbase,打开web页面发现报错:
然后打开日志发现:
对于这样的情况,我以为是策略不对或者不支持,我有重新删除了策略,发现回复,但是没达到我的split的目标,对此,我咨询了群里的群主,然后修改了这个策略的value
region/策略/配置/hbase/大小/属性/发现/长度/0.94/10/
region/策略/配置/hbase/大小/属性/发现/长度/0.94/10/
-->