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;
+ }
}