Repository: hbase Updated Branches: refs/heads/master 3b68e5393 -> 807736fcf
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/807736fc Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/807736fc Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/807736fc Branch: refs/heads/master Commit: 807736fcf153d0d83eab50fd20d096d37c651ca9 Parents: 3b68e53 Author: xcang <[email protected]> Authored: Mon Oct 22 16:29:08 2018 -0700 Committer: Michael Stack <[email protected]> Committed: Tue Oct 23 13:23:24 2018 -0700 ---------------------------------------------------------------------- .../master/balancer/StochasticLoadBalancer.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/807736fc/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 a93e2db..30e4d49 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 @@ -374,9 +374,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; @@ -385,9 +382,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;
