Region拆分
Region的拆分逻辑是通过CompactSplitThread线程的requestSplit方法来触发的,每当执行MemstoreFlush操作时都会调用该方法进行判断,看是否有必要对目标Region进行拆分。
拆分前提
Region可拆分的前提是需要满足如下约束条件:
1、目标RegionServer的线上Region数没有达到hbase.regionserver.regionSplitLimit参数阀值,该参数的默认值为1000,达到900时RegionServer将会打印警告:Total number of regions is approaching the upper limit。
2、StoreFile文件数量没有达到hbase.hstore.blockingStoreFiles参数阀值,此时会优先触发整理操作(详细参考Region整理章节)
3、要拆分的Region不属于meta表格,HBase不支持对meta表格中的Region做拆分操作。
4、Region没有处于recovering状态(参考Region恢复章节)
5、由具体的拆分策略来做决定,通过其shouldSplit方法
HBase对外提供了5中拆分策略,全部由RegionSplitPolicy派生而来,5中策略分别为: