0.94版本之前 分裂的策略采用ConstantSizeRegionSplitPolicy的,在这个情况下只要将配置文件中的hbase.hregion.max.filesize设置为一个超大值则可以将自动分裂关闭。
0.94版本之后 默认策略是IncreasingToUpperBoundRegionSplitPolicy,这个策略是当在一个RS中同一个表的region数量小于9时,如果storefile的最大大小大于Min (R^2 “hbase.hregion.memstore.flush.size”, “hbase.hregion.max.filesize”)则将该region分裂,而当region数量到达了9后则采用ConstantSizeRegionSplitPolicy策略。 使用这种新策略在前期会加快split的频率,防止热点。在后期当region个数到达30个时,30 30 * 128 = 107648M = 105.1G,即在此时,region的切分大小已经超过了我们原先在ConstantSizeRegionSplitPolicy策略中默认设置的100G大小,在后期会减少split频率。好处显而易见。
如果想手动分裂那该如何做呢?
1、将hbase.hregion.max.filesize配置的足够大
2、在hbase-site.xml配置文件中,添加:
name为hbase.regionserver.region.split.policy
value为org.apache.hadoop.hbase.regionserver.ConstantSizeRegionSplitPolicy
这样我们就能够按照0.94之前版本的分裂策略来控制region的分裂了。