Repository: hbase
Updated Branches:
  refs/heads/branch-1 2845ddaf9 -> bafc6e523
  refs/heads/branch-1.4 d4aa7181c -> cfbbcf5c1
  refs/heads/branch-2 518674bce -> d0a54352e
  refs/heads/master bc790fe26 -> 830173459


HBASE-18478 Allow users to remove RegionFinder from LoadBalancer calculations 
if no locality possible

This provides significant cluster start time reduction for FileSystems which do 
not surface locality (S3).

Signed-off-by: Andrew Purtell <apurt...@apache.org>

Conflicts:
        
hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/bafc6e52
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/bafc6e52
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/bafc6e52

Branch: refs/heads/branch-1
Commit: bafc6e523efba67b5829d2095500c134df1ae4ce
Parents: 2845dda
Author: Zach York <zy...@amazon.com>
Authored: Thu Jun 22 14:12:49 2017 -0700
Committer: Andrew Purtell <apurt...@apache.org>
Committed: Tue Sep 19 16:30:43 2017 -0700

----------------------------------------------------------------------
 .../hbase/master/balancer/BaseLoadBalancer.java | 29 ++++++++++++++++----
 1 file changed, 23 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/bafc6e52/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
index f96f0eb..97a4cb1 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
@@ -39,6 +39,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.ClusterStatus;
+import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.HBaseIOException;
 import org.apache.hadoop.hbase.HDFSBlocksDistribution;
 import org.apache.hadoop.hbase.HRegionInfo;
@@ -71,7 +72,8 @@ public abstract class BaseLoadBalancer implements 
LoadBalancer {
 
   private static final List<HRegionInfo> EMPTY_REGION_LIST = new 
ArrayList<HRegionInfo>(0);
 
-  protected final RegionLocationFinder regionFinder = new 
RegionLocationFinder();
+  protected RegionLocationFinder regionFinder;
+  protected boolean useRegionFinder;
 
   private static class DefaultRackManager extends RackManager {
     @Override
@@ -85,6 +87,7 @@ public abstract class BaseLoadBalancer implements 
LoadBalancer {
    */
   protected BaseLoadBalancer() {
     metricsBalancer = new MetricsBalancer();
+    createRegionFinder();
   }
 
   /**
@@ -93,6 +96,14 @@ public abstract class BaseLoadBalancer implements 
LoadBalancer {
    */
   protected BaseLoadBalancer(MetricsBalancer metricsBalancer) {
     this.metricsBalancer = (metricsBalancer != null) ? metricsBalancer : new 
MetricsBalancer();
+    createRegionFinder();
+  }
+
+  private void createRegionFinder() {
+    useRegionFinder = config.getBoolean("hbase.master.balancer.uselocality", 
true);
+    if (useRegionFinder) {
+      regionFinder = new RegionLocationFinder();
+    }
   }
 
   /**
@@ -1085,7 +1096,7 @@ public abstract class BaseLoadBalancer implements 
LoadBalancer {
 
   // slop for regions
   protected float slop;
-  protected Configuration config;
+  protected Configuration config = HBaseConfiguration.create();
   protected RackManager rackManager;
   private static final Random RANDOM = new Random(System.currentTimeMillis());
   private static final Log LOG = LogFactory.getLog(BaseLoadBalancer.class);
@@ -1145,7 +1156,9 @@ public abstract class BaseLoadBalancer implements 
LoadBalancer {
       Collections.addAll(tablesOnMaster, tables);
     }
     this.rackManager = new RackManager(getConf());
-    regionFinder.setConf(conf);
+    if (useRegionFinder) {
+      regionFinder.setConf(conf);
+    }
   }
 
   protected void setSlop(Configuration conf) {
@@ -1240,14 +1253,18 @@ public abstract class BaseLoadBalancer implements 
LoadBalancer {
   @Override
   public synchronized void setClusterStatus(ClusterStatus st) {
     this.clusterStatus = st;
-    regionFinder.setClusterStatus(st);
+    if (useRegionFinder) {
+      regionFinder.setClusterStatus(st);
+    }
   }
 
   @Override
   public void setMasterServices(MasterServices masterServices) {
     masterServerName = masterServices.getServerName();
     this.services = masterServices;
-    this.regionFinder.setServices(masterServices);
+    if (useRegionFinder) {
+      this.regionFinder.setServices(masterServices);
+    }
   }
 
   public void setRackManager(RackManager rackManager) {
@@ -1398,7 +1415,7 @@ public abstract class BaseLoadBalancer implements 
LoadBalancer {
 
   protected Cluster createCluster(List<ServerName> servers,
       Collection<HRegionInfo> regions, boolean forceRefresh) {
-    if (forceRefresh == true) {
+    if (forceRefresh && useRegionFinder) {
       regionFinder.refreshAndWait(regions);
     }
     // Get the snapshot of the current assignments for the regions in 
question, and then create

Reply via email to