Repository: hbase Updated Branches: refs/heads/branch-2.0 2b675e36d -> 8a04d444d
HBASE-21338 Warn if balancer is an ill-fit for cluster size Signed-off-by: Michael Stack <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/8a04d444 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/8a04d444 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/8a04d444 Branch: refs/heads/branch-2.0 Commit: 8a04d444d7ea999f06c3a15137c75b507ae75925 Parents: 2b675e3 Author: xcang <[email protected]> Authored: Mon Oct 22 16:29:08 2018 -0700 Committer: Michael Stack <[email protected]> Committed: Tue Oct 23 13:21:36 2018 -0700 ---------------------------------------------------------------------- .../master/balancer/StochasticLoadBalancer.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/8a04d444/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java index d134690..b2c6629 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java @@ -372,9 +372,6 @@ public class StochasticLoadBalancer extends BaseLoadBalancer { for (int i = 0; i < this.curFunctionCosts.length; i++) { curFunctionCosts[i] = tempFunctionCosts[i]; } - LOG.info("start StochasticLoadBalancer.balancer, initCost=" + currentCost + ", functionCost=" - + functionCost()); - double initCost = currentCost; double newCost = currentCost; @@ -383,9 +380,20 @@ public class StochasticLoadBalancer extends BaseLoadBalancer { computedMaxSteps = Math.max(this.maxSteps, ((long)cluster.numRegions * (long)this.stepsPerRegion * (long)cluster.numServers)); } else { - computedMaxSteps = Math.min(this.maxSteps, - ((long)cluster.numRegions * (long)this.stepsPerRegion * (long)cluster.numServers)); + long calculatedMaxSteps = (long)cluster.numRegions * (long)this.stepsPerRegion * + (long)cluster.numServers; + computedMaxSteps = Math.min(this.maxSteps, calculatedMaxSteps); + if (calculatedMaxSteps > maxSteps) { + LOG.warn("calculatedMaxSteps:{} for loadbalancer's stochastic walk is larger than " + + "maxSteps:{}. Hence load balancing may not work well. Setting parameter " + + "\"hbase.master.balancer.stochastic.runMaxSteps\" to true can overcome this issue." + + "(This config change does not require service restart)", calculatedMaxSteps, + maxRunningTime); + } } + LOG.info("start StochasticLoadBalancer.balancer, initCost=" + currentCost + ", functionCost=" + + functionCost() + " computedMaxSteps: " + computedMaxSteps); + // Perform a stochastic walk to see if we can get a good fit. long step;
