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;
 

Reply via email to