Repository: hbase Updated Branches: refs/heads/branch-2.1 e29ce9f93 -> 3979aebeb
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/3979aebe Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/3979aebe Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/3979aebe Branch: refs/heads/branch-2.1 Commit: 3979aebebf5e098ab7202647b0e7fe06c2829211 Parents: e29ce9f Author: xcang <[email protected]> Authored: Mon Oct 22 16:29:08 2018 -0700 Committer: Michael Stack <[email protected]> Committed: Tue Oct 23 13:22:41 2018 -0700 ---------------------------------------------------------------------- .../master/balancer/StochasticLoadBalancer.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/3979aebe/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;
