From a1230099bee2597985b16ca76de769dac6721124 Mon Sep 17 00:00:00 2001 From: Elliott Clark Date: Mon, 6 Apr 2015 10:22:32 -0700 Subject: [PATCH] HBASE-13412 Region split decisions should have jitter --- .../hadoop/hbase/regionserver/ConstantSizeRegionSplitPolicy.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ConstantSizeRegionSplitPolicy.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ConstantSizeRegionSplitPolicy.java index 2459ae6..519bf2d 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ConstantSizeRegionSplitPolicy.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ConstantSizeRegionSplitPolicy.java @@ -23,6 +23,8 @@ import org.apache.hadoop.hbase.HBaseInterfaceAudience; import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.HTableDescriptor; +import java.util.Random; + /** * A {@link RegionSplitPolicy} implementation which splits a region * as soon as any of its store files exceeds a maximum configurable @@ -34,6 +36,8 @@ import org.apache.hadoop.hbase.HTableDescriptor; */ @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG) public class ConstantSizeRegionSplitPolicy extends RegionSplitPolicy { + private static final Random RANDOM = new Random(); + private long desiredMaxFileSize; @Override @@ -48,6 +52,8 @@ public class ConstantSizeRegionSplitPolicy extends RegionSplitPolicy { this.desiredMaxFileSize = conf.getLong(HConstants.HREGION_MAX_FILESIZE, HConstants.DEFAULT_MAX_FILE_SIZE); } + double sizeJitter = conf.getDouble("hbase.hregion.max.filesize.jitter", 0.02D); + this.desiredMaxFileSize = (long)(desiredMaxFileSize * (RANDOM.nextFloat() - 0.5D) * sizeJitter); } @Override -- 2.3.0