Jelajahi Sumber

MAPREDUCE-4406. Users should be able to specify the MiniCluster ResourceManager and JobHistoryServer ports. (ahmed via tucu)

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1362751 13f79535-47bb-0310-9956-ffa450edef68
Alejandro Abdelnur 13 tahun lalu
induk
melakukan
c700642308

+ 3 - 0
hadoop-mapreduce-project/CHANGES.txt

@@ -139,6 +139,9 @@ Branch-2 ( Unreleased changes )
     MAPREDUCE-4422. YARN_APPLICATION_CLASSPATH needs a documented default value in 
     MAPREDUCE-4422. YARN_APPLICATION_CLASSPATH needs a documented default value in 
     YarnConfiguration. (ahmed via tucu)
     YarnConfiguration. (ahmed via tucu)
 
 
+    MAPREDUCE-4406. Users should be able to specify the MiniCluster ResourceManager 
+    and JobHistoryServer ports. (ahmed via tucu)
+
 Release 2.1.0-alpha - Unreleased 
 Release 2.1.0-alpha - Unreleased 
 
 
   INCOMPATIBLE CHANGES
   INCOMPATIBLE CHANGES

+ 11 - 0
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-common/src/main/java/org/apache/hadoop/mapreduce/v2/jobhistory/JHAdminConfig.java

@@ -134,4 +134,15 @@ public class JHAdminConfig {
    */
    */
   public static final String MR_HISTORY_STORAGE =
   public static final String MR_HISTORY_STORAGE =
     MR_HISTORY_PREFIX + "store.class";
     MR_HISTORY_PREFIX + "store.class";
+
+  /** Whether to use fixed ports with the minicluster. */
+  public static final String MR_HISTORY_MINICLUSTER_FIXED_PORTS = MR_HISTORY_PREFIX
+       + "minicluster.fixed.ports";
+
+  /**
+   * Default is false to be able to run tests concurrently without port
+   * conflicts.
+   */
+  public static boolean DEFAULT_MR_HISTORY_MINICLUSTER_FIXED_PORTS = false;
+
 }
 }

+ 9 - 8
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapreduce/v2/MiniMRYarnCluster.java

@@ -113,10 +113,6 @@ public class MiniMRYarnCluster extends MiniYARNCluster {
     // for corresponding uberized tests.
     // for corresponding uberized tests.
     conf.setBoolean(MRJobConfig.JOB_UBERTASK_ENABLE, false);
     conf.setBoolean(MRJobConfig.JOB_UBERTASK_ENABLE, false);
 
 
-    // Set config for JH Server
-    conf.set(JHAdminConfig.MR_HISTORY_ADDRESS,
-        JHAdminConfig.DEFAULT_MR_HISTORY_ADDRESS);
-
     super.init(conf);
     super.init(conf);
   }
   }
 
 
@@ -128,10 +124,15 @@ public class MiniMRYarnCluster extends MiniYARNCluster {
     @Override
     @Override
     public synchronized void start() {
     public synchronized void start() {
       try {
       try {
-        getConfig().set(JHAdminConfig.MR_HISTORY_ADDRESS,
-                        MiniYARNCluster.getHostname() + ":0");
-        getConfig().set(JHAdminConfig.MR_HISTORY_WEBAPP_ADDRESS,
-                        MiniYARNCluster.getHostname() + ":0");
+        if (!getConfig().getBoolean(
+            JHAdminConfig.MR_HISTORY_MINICLUSTER_FIXED_PORTS,
+            JHAdminConfig.DEFAULT_MR_HISTORY_MINICLUSTER_FIXED_PORTS)) {
+          // pick free random ports.
+          getConfig().set(JHAdminConfig.MR_HISTORY_ADDRESS,
+              MiniYARNCluster.getHostname() + ":0");
+          getConfig().set(JHAdminConfig.MR_HISTORY_WEBAPP_ADDRESS,
+              MiniYARNCluster.getHostname() + ":0");
+        }
         historyServer = new JobHistoryServer();
         historyServer = new JobHistoryServer();
         historyServer.init(getConfig());
         historyServer.init(getConfig());
         new Thread() {
         new Thread() {

+ 10 - 0
hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java

@@ -565,6 +565,16 @@ public class YarnConfiguration extends Configuration {
 
 
   public static final String IS_MINI_YARN_CLUSTER = YARN_PREFIX + ".is.minicluster";
   public static final String IS_MINI_YARN_CLUSTER = YARN_PREFIX + ".is.minicluster";
 
 
+  /** Whether to use fixed ports with the minicluster. */
+  public static final String YARN_MINICLUSTER_FIXED_PORTS = YARN_PREFIX
+      + "minicluster.fixed.ports";
+
+  /**
+   * Default is false to be able to run tests concurrently without port
+   * conflicts.
+   */
+  public static boolean DEFAULT_YARN_MINICLUSTER_FIXED_PORTS = false;
+
   public YarnConfiguration() {
   public YarnConfiguration() {
     super();
     super();
   }
   }

+ 15 - 12
hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/MiniYARNCluster.java

@@ -135,18 +135,21 @@ public class MiniYARNCluster extends CompositeService {
     public synchronized void start() {
     public synchronized void start() {
       try {
       try {
         getConfig().setBoolean(YarnConfiguration.IS_MINI_YARN_CLUSTER, true);
         getConfig().setBoolean(YarnConfiguration.IS_MINI_YARN_CLUSTER, true);
-        getConfig().set(YarnConfiguration.RM_ADDRESS,
-                        MiniYARNCluster.getHostname() + ":0");
-        getConfig().set(YarnConfiguration.RM_ADDRESS,
-                        MiniYARNCluster.getHostname() + ":0");
-        getConfig().set(YarnConfiguration.RM_ADMIN_ADDRESS,
-                        MiniYARNCluster.getHostname() + ":0");
-        getConfig().set(YarnConfiguration.RM_SCHEDULER_ADDRESS,
-                        MiniYARNCluster.getHostname() + ":0");
-        getConfig().set(YarnConfiguration.RM_RESOURCE_TRACKER_ADDRESS,
-                        MiniYARNCluster.getHostname() + ":0");
-        getConfig().set(YarnConfiguration.RM_WEBAPP_ADDRESS,
-                        MiniYARNCluster.getHostname() + ":0");
+        if (!getConfig().getBoolean(
+            YarnConfiguration.YARN_MINICLUSTER_FIXED_PORTS,
+            YarnConfiguration.DEFAULT_YARN_MINICLUSTER_FIXED_PORTS)) {
+          // pick free random ports.
+          getConfig().set(YarnConfiguration.RM_ADDRESS,
+              MiniYARNCluster.getHostname() + ":0");
+          getConfig().set(YarnConfiguration.RM_ADMIN_ADDRESS,
+              MiniYARNCluster.getHostname() + ":0");
+          getConfig().set(YarnConfiguration.RM_SCHEDULER_ADDRESS,
+              MiniYARNCluster.getHostname() + ":0");
+          getConfig().set(YarnConfiguration.RM_RESOURCE_TRACKER_ADDRESS,
+              MiniYARNCluster.getHostname() + ":0");
+          getConfig().set(YarnConfiguration.RM_WEBAPP_ADDRESS,
+              MiniYARNCluster.getHostname() + ":0");
+        }
         Store store = StoreFactory.getStore(getConfig());
         Store store = StoreFactory.getStore(getConfig());
         resourceManager = new ResourceManager(store) {
         resourceManager = new ResourceManager(store) {
           @Override
           @Override