hbase的Region分裂代码分析
region分裂有2种触发情景:1是用户手动触发(参见HRegionServer的splitRegion方法),2是后台flush线程flush完一个region的memstore时,会去检查这个region是否需要分裂(参见MemStoreFlushe的flushRegion方法)。这两种情景在代码实现上并无多大差异。 1.下面以手动的split为例分析,手动split有HregionServer的splitRegion开始 @Override//手动split的实现 publicvoidsplitRegion(HRegionInforegionInfo,byte[]splitPoint) throwsNotServingRegionException,IOException{ checkOpen(); HRegionregion=getRegion(regionInfo.getRegionName()); region.flushcache();//刷新memstore,减少内存堆积 region.forceSplit(splitPoint);//强制split compactSp...