最近在做 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 的数量和大小,都没有变化,表示很费解!群主大人给了建议就是手动进行大合并:完了登陆 web‘页面就会发现已经开始 compact 了:观察发现随着 compact 的进行,region 的数目朝着预期的目标增加,初步推断,修改成功!总结:有些资料和网上的东西,不见得就和自己的集群版本那么契合,要多问大牛,积累经验!