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;
 

Reply via email to