HBASE-20449 The minimun number of region should be configurable in Normalizer
Signed-off-by: tedyu <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/80cbc0d1 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/80cbc0d1 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/80cbc0d1 Branch: refs/heads/HBASE-19064 Commit: 80cbc0d1fefdba1492d7ec6e580ad54a2960cbdb Parents: f4f2b68 Author: wangyu <[email protected]> Authored: Wed Apr 18 18:09:03 2018 +0800 Committer: tedyu <[email protected]> Committed: Wed Apr 18 08:45:52 2018 -0700 ---------------------------------------------------------------------- hbase-common/src/main/resources/hbase-default.xml | 5 +++++ .../hbase/master/normalizer/SimpleRegionNormalizer.java | 10 +++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/80cbc0d1/hbase-common/src/main/resources/hbase-default.xml ---------------------------------------------------------------------- diff --git a/hbase-common/src/main/resources/hbase-default.xml b/hbase-common/src/main/resources/hbase-default.xml index 61f0461..7983ea3 100644 --- a/hbase-common/src/main/resources/hbase-default.xml +++ b/hbase-common/src/main/resources/hbase-default.xml @@ -617,6 +617,11 @@ possible configurations would overwhelm and obscure the important. <description>Period at which the region normalizer runs in the Master.</description> </property> <property> + <name>hbase.normalizer.min.region.count</name> + <value>3</value> + <description>configure the minimum number of regions</description> + </property> + <property> <name>hbase.regions.slop</name> <value>0.001</value> <description>Rebalance if any regionserver has average + (average * slop) regions. http://git-wip-us.apache.org/repos/asf/hbase/blob/80cbc0d1/hbase-server/src/main/java/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.java index ea2187b..f02ccf4 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.java @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; +import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HBaseIOException; import org.apache.hadoop.hbase.RegionMetrics; import org.apache.hadoop.hbase.ServerName; @@ -61,11 +62,14 @@ import org.apache.hadoop.hbase.shaded.protobuf.RequestConverter; public class SimpleRegionNormalizer implements RegionNormalizer { private static final Logger LOG = LoggerFactory.getLogger(SimpleRegionNormalizer.class); - private static final int MIN_REGION_COUNT = 3; + private int minRegionCount; private MasterServices masterServices; private MasterRpcServices masterRpcServices; private static long[] skippedCount = new long[NormalizationPlan.PlanType.values().length]; + public SimpleRegionNormalizer() { + minRegionCount = HBaseConfiguration.create().getInt("hbase.normalizer.min.region.count", 3); + } /** * Set the master service. * @param masterServices inject instance of MasterServices @@ -131,10 +135,10 @@ public class SimpleRegionNormalizer implements RegionNormalizer { getRegionsOfTable(table); //TODO: should we make min number of regions a config param? - if (tableRegions == null || tableRegions.size() < MIN_REGION_COUNT) { + if (tableRegions == null || tableRegions.size() < minRegionCount) { int nrRegions = tableRegions == null ? 0 : tableRegions.size(); LOG.debug("Table " + table + " has " + nrRegions + " regions, required min number" - + " of regions for normalizer to run is " + MIN_REGION_COUNT + ", not running normalizer"); + + " of regions for normalizer to run is " + minRegionCount + ", not running normalizer"); return null; }
