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");