You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2013/08/21 23:42:03 UTC

svn commit: r1516310 - in /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master: HMaster.java LoadBalancer.java balancer/BaseLoadBalancer.java

Author: stack
Date: Wed Aug 21 21:42:03 2013
New Revision: 1516310

URL: http://svn.apache.org/r1516310
Log:
HBASE-9263 Add initialize method to load balancer interface

Modified:
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java?rev=1516310&r1=1516309&r2=1516310&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java Wed Aug 21 21:42:03 2013
@@ -836,10 +836,16 @@ MasterServices, Server {
     Set<ServerName> previouslyFailedMetaRSs = getPreviouselyFailedMetaServersFromZK();
 
     this.initializationBeforeMetaAssignment = true;
+
+    //initialize load balancer
+    this.balancer.setClusterStatus(getClusterStatus());
+    this.balancer.setMasterServices(this);
+    this.balancer.initialize();
+
     // Make sure meta assigned before proceeding.
     status.setStatus("Assigning Meta Region");
     assignMeta(status);
-    // check if master is shutting down because above assignMeta could return even META isn't 
+    // check if master is shutting down because above assignMeta could return even META isn't
     // assigned when master is shutting down
     if(this.stopped) return;
 
@@ -877,11 +883,11 @@ MasterServices, Server {
     org.apache.hadoop.hbase.catalog.MetaMigrationConvertingToPB
       .updateMetaIfNecessary(this);
 
-    this.balancer.setMasterServices(this);
     // Fix up assignment manager status
     status.setStatus("Starting assignment manager");
     this.assignmentManager.joinCluster();
 
+    //set cluster status again after user regions are assigned
     this.balancer.setClusterStatus(getClusterStatus());
 
     if (!masterRecovery) {
@@ -974,7 +980,7 @@ MasterServices, Server {
     boolean beingExpired = false;
 
     status.setStatus("Assigning META region");
-    
+
     assignmentManager.getRegionStates().createRegionState(HRegionInfo.FIRST_META_REGIONINFO);
     boolean rit = this.assignmentManager
         .processRegionInTransitionAndBlockUntilAssigned(HRegionInfo.FIRST_META_REGIONINFO);
@@ -1217,11 +1223,11 @@ MasterServices, Server {
   public ActiveMasterManager getActiveMasterManager() {
     return this.activeMasterManager;
   }
-  
+
   public MasterAddressTracker getMasterAddressManager() {
     return this.masterAddressManager;
   }
-  
+
   /*
    * Start up all services. If any of these threads gets an unhandled exception
    * then they just die with a logged message.  This should be fine because
@@ -1785,14 +1791,14 @@ MasterServices, Server {
     if (getNamespaceDescriptor(namespace) == null) {
       throw new ConstraintException("Namespace " + namespace + " does not exist");
     }
-    
+
     HRegionInfo[] newRegions = getHRegionInfos(hTableDescriptor, splitKeys);
     checkInitialized();
     checkCompression(hTableDescriptor);
     if (cpHost != null) {
       cpHost.preCreateTable(hTableDescriptor, newRegions);
     }
-    
+
     this.executorService.submit(new CreateTableHandler(this,
       this.fileSystemManager, hTableDescriptor, conf,
       newRegions, this).prepare());

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java?rev=1516310&r1=1516309&r2=1516310&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java Wed Aug 21 21:42:03 2013
@@ -27,6 +27,7 @@ import org.apache.hadoop.hbase.ClusterSt
 import org.apache.hadoop.hbase.HBaseIOException;
 import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.ServerName;
+import org.apache.hadoop.hbase.Stoppable;
 
 /**
  * Makes decisions about the placement and movement of Regions across
@@ -45,7 +46,7 @@ import org.apache.hadoop.hbase.ServerNam
  * <p>This classes produces plans for the {@link AssignmentManager} to execute.
  */
 @InterfaceAudience.Public
-public interface LoadBalancer extends Configurable {
+public interface LoadBalancer extends Configurable, Stoppable {
 
   /**
    * Set the current cluster status.  This allows a LoadBalancer to map host name to a server
@@ -110,4 +111,10 @@ public interface LoadBalancer extends Co
   ServerName randomAssignment(
     HRegionInfo regionInfo, List<ServerName> servers
   ) throws HBaseIOException;
+
+  /**
+   * Initialize the load balancer. Must be called after setters.
+   * @throws HBaseIOException
+   */
+  void initialize() throws HBaseIOException;
 }

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java?rev=1516310&r1=1516309&r2=1516310&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java Wed Aug 21 21:42:03 2013
@@ -33,6 +33,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.HBaseIOException;
 import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.RegionLoad;
 import org.apache.hadoop.hbase.ServerName;
@@ -51,6 +52,7 @@ import com.google.common.collect.Sets;
  *
  */
 public abstract class BaseLoadBalancer implements LoadBalancer {
+  private volatile boolean stopped = false;
 
   /**
    * An efficient array based implementation similar to ClusterState for keeping
@@ -566,4 +568,18 @@ public abstract class BaseLoadBalancer i
     return assignments;
   }
 
+  @Override
+  public void initialize() throws HBaseIOException{
+  }
+
+  @Override
+  public boolean isStopped() {
+    return stopped;
+  }
+
+  @Override
+  public void stop(String why) {
+    LOG.info("Load Balancer stop requested: "+why);
+    stopped = true;
+  }
 }