diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java
index 4429d81..d981931 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java
@@ -145,9 +145,15 @@ public final class HConstants {
/** default port for master web api */
public static final int DEFAULT_MASTER_INFOPORT = 16010;
+ /** default port for master's regionserver's web api */
+ public static final int DEFAULT_MASTER_REGIONSERVER_INFOPORT = 16040;
+
/** Configuration key for master web API port */
public static final String MASTER_INFO_PORT = "hbase.master.info.port";
+ /** Configuration key for master's regionserver's web API port */
+ public static final String MASTER_REGIONSERVER_INFO_PORT = "hbase.master.regionserver.info.port";
+
/** Parameter name for the master type being backup (waits for primary to go inactive). */
public static final String MASTER_TYPE_BACKUP = "hbase.master.backup";
diff --git a/hbase-common/src/main/resources/hbase-default.xml b/hbase-common/src/main/resources/hbase-default.xml
index db99f12..c56a418 100644
--- a/hbase-common/src/main/resources/hbase-default.xml
+++ b/hbase-common/src/main/resources/hbase-default.xml
@@ -1397,4 +1397,12 @@ possible configurations would overwhelm and obscure the important.
0.x Abort only when this percent of handlers have died;
1 Abort only all of the handers have died.
+
+ hbase.master.port
+ 16000
+
+
+ hbase.master.regionserver.info.port
+ 16040
+
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMasterCommandLine.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMasterCommandLine.java
index 6ac681e..b8648ad 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMasterCommandLine.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMasterCommandLine.java
@@ -91,6 +91,17 @@ public class HMasterCommandLine extends ServerCommandLine {
return 1;
}
+ String masterPort = getConf().get(HConstants.MASTER_PORT);
+ String masterRegionserverInfoPort = getConf().get(HConstants.MASTER_REGIONSERVER_INFO_PORT);
+ if (masterPort != null && masterRegionserverInfoPort != null) {
+ // when run in this mode, we'd honor the master RPC port, and start the master's
+ // regionserver's jetty on a different port. This is mainly to provide compatibility
+ // with older hbase versions when both master and regionserver are run in the same machine
+ // Without doing this, servers will run into bind exceptions
+ getConf().setInt(HConstants.REGIONSERVER_PORT, Integer.parseInt(masterPort));
+ getConf().setInt(HConstants.REGIONSERVER_INFO_PORT,
+ Integer.parseInt(masterRegionserverInfoPort));
+ }
if (cmd.hasOption("minRegionServers")) {
String val = cmd.getOptionValue("minRegionServers");