소스 검색

YARN-1182. MiniYARNCluster creates and inits the RM/NM only on start() (Karthik Kambatla via Sandy Ryza)

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1532113 13f79535-47bb-0310-9956-ffa450edef68
Sanford Ryza 11 년 전
부모
커밋
b130cdbed0

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

@@ -45,6 +45,9 @@ Release 2.3.0 - UNRELEASED
 
     YARN-1258. Allow configuring the Fair Scheduler root queue (Sandy Ryza)
 
+    YARN-1182. MiniYARNCluster creates and inits the RM/NM only on start()
+    (Karthik Kambatla via Sandy Ryza)
+
   OPTIMIZATIONS
 
   BUG FIXES

+ 65 - 62
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/MiniYARNCluster.java

@@ -189,31 +189,33 @@ public class MiniYARNCluster extends CompositeService {
     }
 
     @Override
-    public synchronized void serviceStart() throws Exception {
-      try {
-        getConfig().setBoolean(YarnConfiguration.IS_MINI_YARN_CLUSTER, true);
-        if (!getConfig().getBoolean(
-            YarnConfiguration.YARN_MINICLUSTER_FIXED_PORTS,
-            YarnConfiguration.DEFAULT_YARN_MINICLUSTER_FIXED_PORTS)) {
-          // pick free random ports.
-          String hostname = MiniYARNCluster.getHostname();
-          getConfig().set(YarnConfiguration.RM_ADDRESS,
-              hostname + ":0");
-          getConfig().set(YarnConfiguration.RM_ADMIN_ADDRESS,
-              hostname + ":0");
-          getConfig().set(YarnConfiguration.RM_SCHEDULER_ADDRESS,
-              hostname + ":0");
-          getConfig().set(YarnConfiguration.RM_RESOURCE_TRACKER_ADDRESS,
-              hostname + ":0");
-          WebAppUtils.setRMWebAppHostnameAndPort(getConfig(), hostname, 0);
-        }
-        resourceManager = new ResourceManager() {
-          @Override
-          protected void doSecureLogin() throws IOException {
-            // Don't try to login using keytab in the testcase.
-          };
+    protected synchronized void serviceInit(Configuration conf)
+        throws Exception {
+      conf.setBoolean(YarnConfiguration.IS_MINI_YARN_CLUSTER, true);
+      if (!conf.getBoolean(
+          YarnConfiguration.YARN_MINICLUSTER_FIXED_PORTS,
+          YarnConfiguration.DEFAULT_YARN_MINICLUSTER_FIXED_PORTS)) {
+        // pick free random ports.
+        String hostname = MiniYARNCluster.getHostname();
+        conf.set(YarnConfiguration.RM_ADDRESS, hostname + ":0");
+        conf.set(YarnConfiguration.RM_ADMIN_ADDRESS, hostname + ":0");
+        conf.set(YarnConfiguration.RM_SCHEDULER_ADDRESS, hostname + ":0");
+        conf.set(YarnConfiguration.RM_RESOURCE_TRACKER_ADDRESS, hostname + ":0");
+        WebAppUtils.setRMWebAppHostnameAndPort(conf, hostname, 0);
+      }
+      resourceManager = new ResourceManager() {
+        @Override
+        protected void doSecureLogin() throws IOException {
+          // Don't try to login using keytab in the testcase.
         };
-        resourceManager.init(getConfig());
+      };
+      resourceManager.init(conf);
+      super.serviceInit(conf);
+    }
+
+    @Override
+    protected synchronized void serviceStart() throws Exception {
+      try {
         new Thread() {
           public void run() {
             resourceManager.start();
@@ -242,7 +244,7 @@ public class MiniYARNCluster extends CompositeService {
     }
 
     @Override
-    public synchronized void serviceStop() throws Exception {
+    protected synchronized void serviceStop() throws Exception {
       if (resourceManager != null) {
         resourceManager.stop();
       }
@@ -271,8 +273,43 @@ public class MiniYARNCluster extends CompositeService {
       index = i;
     }
 
-    public synchronized void serviceInit(Configuration conf) throws Exception {
+    protected synchronized void serviceInit(Configuration conf)
+        throws Exception {
       Configuration config = new YarnConfiguration(conf);
+      // create nm-local-dirs and configure them for the nodemanager
+      String localDirsString = prepareDirs("local", numLocalDirs);
+      config.set(YarnConfiguration.NM_LOCAL_DIRS, localDirsString);
+      // create nm-log-dirs and configure them for the nodemanager
+      String logDirsString = prepareDirs("log", numLogDirs);
+      config.set(YarnConfiguration.NM_LOG_DIRS, logDirsString);
+
+      File remoteLogDir =
+          new File(testWorkDir, MiniYARNCluster.this.getName()
+              + "-remoteLogDir-nm-" + index);
+      remoteLogDir.mkdir();
+      config.set(YarnConfiguration.NM_REMOTE_APP_LOG_DIR,
+          remoteLogDir.getAbsolutePath());
+      // By default AM + 2 containers
+      config.setInt(YarnConfiguration.NM_PMEM_MB, 4*1024);
+      config.set(YarnConfiguration.NM_ADDRESS,
+          MiniYARNCluster.getHostname() + ":0");
+      config.set(YarnConfiguration.NM_LOCALIZER_ADDRESS,
+          MiniYARNCluster.getHostname() + ":0");
+      WebAppUtils
+          .setNMWebAppHostNameAndPort(config,
+              MiniYARNCluster.getHostname(), 0);
+
+      // Disable resource checks by default
+      if (!config.getBoolean(
+          YarnConfiguration.YARN_MINICLUSTER_CONTROL_RESOURCE_MONITORING,
+          YarnConfiguration.
+              DEFAULT_YARN_MINICLUSTER_CONTROL_RESOURCE_MONITORING)) {
+        config.setBoolean(YarnConfiguration.NM_PMEM_CHECK_ENABLED, false);
+        config.setBoolean(YarnConfiguration.NM_VMEM_CHECK_ENABLED, false);
+      }
+
+      LOG.info("Starting NM: " + index);
+      nodeManagers[index].init(config);
       super.serviceInit(config);
     }
 
@@ -296,42 +333,8 @@ public class MiniYARNCluster extends CompositeService {
       return dirsString;
     }
 
-    public synchronized void serviceStart() throws Exception {
+    protected synchronized void serviceStart() throws Exception {
       try {
-        // create nm-local-dirs and configure them for the nodemanager
-        String localDirsString = prepareDirs("local", numLocalDirs);
-        getConfig().set(YarnConfiguration.NM_LOCAL_DIRS, localDirsString);
-        // create nm-log-dirs and configure them for the nodemanager
-        String logDirsString = prepareDirs("log", numLogDirs);
-        getConfig().set(YarnConfiguration.NM_LOG_DIRS, logDirsString);
-
-        File remoteLogDir =
-            new File(testWorkDir, MiniYARNCluster.this.getName()
-                + "-remoteLogDir-nm-" + index);
-        remoteLogDir.mkdir();
-        getConfig().set(YarnConfiguration.NM_REMOTE_APP_LOG_DIR,
-            	remoteLogDir.getAbsolutePath());
-        // By default AM + 2 containers
-        getConfig().setInt(YarnConfiguration.NM_PMEM_MB, 4*1024);
-        getConfig().set(YarnConfiguration.NM_ADDRESS,
-                        MiniYARNCluster.getHostname() + ":0");
-        getConfig().set(YarnConfiguration.NM_LOCALIZER_ADDRESS,
-                        MiniYARNCluster.getHostname() + ":0");
-        WebAppUtils
-            .setNMWebAppHostNameAndPort(getConfig(),
-                MiniYARNCluster.getHostname(), 0);
-
-        // Disable resource checks by default
-        if (!getConfig().getBoolean(
-            YarnConfiguration.YARN_MINICLUSTER_CONTROL_RESOURCE_MONITORING,
-            YarnConfiguration.
-                DEFAULT_YARN_MINICLUSTER_CONTROL_RESOURCE_MONITORING)) {
-          getConfig().setBoolean(YarnConfiguration.NM_PMEM_CHECK_ENABLED, false);
-          getConfig().setBoolean(YarnConfiguration.NM_VMEM_CHECK_ENABLED, false);
-        }
-
-        LOG.info("Starting NM: " + index);
-        nodeManagers[index].init(getConfig());
         new Thread() {
           public void run() {
             nodeManagers[index].start();
@@ -354,7 +357,7 @@ public class MiniYARNCluster extends CompositeService {
     }
 
     @Override
-    public synchronized void serviceStop() throws Exception {
+    protected synchronized void serviceStop() throws Exception {
       if (nodeManagers[index] != null) {
         nodeManagers[index].stop();
       }