diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/MiniYARNCluster.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/MiniYARNCluster.java index a348390..0a66015 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/MiniYARNCluster.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/MiniYARNCluster.java @@ -251,9 +251,9 @@ public void serviceInit(Configuration conf) throws Exception { resourceManagers[i] = createResourceManager(); if (!useFixedPorts) { if (HAUtil.isHAEnabled(conf)) { - setHARMConfiguration(i, conf); + setHARMConfigurationWithEphemeralPorts(i, conf); } else { - setNonHARMConfiguration(conf); + setNonHARMConfigurationWithEphemeralPorts(conf); } } addService(new ResourceManagerWrapper(i)); @@ -273,7 +273,7 @@ public void serviceInit(Configuration conf) throws Exception { conf instanceof YarnConfiguration ? conf : new YarnConfiguration(conf)); } - private void setNonHARMConfiguration(Configuration conf) { + private void setNonHARMConfigurationWithEphemeralPorts(Configuration conf) { String hostname = MiniYARNCluster.getHostname(); conf.set(YarnConfiguration.RM_ADDRESS, hostname + ":0"); conf.set(YarnConfiguration.RM_ADMIN_ADDRESS, hostname + ":0"); @@ -282,7 +282,7 @@ private void setNonHARMConfiguration(Configuration conf) { WebAppUtils.setRMWebAppHostnameAndPort(conf, hostname, 0); } - private void setHARMConfiguration(final int index, Configuration conf) { + private void setHARMConfigurationWithEphemeralPorts(final int index, Configuration conf) { String hostname = MiniYARNCluster.getHostname(); for (String confKey : YarnConfiguration.getServiceAddressConfKeys(conf)) { conf.set(HAUtil.addSuffix(confKey, rmIds[index]), hostname + ":0"); @@ -703,6 +703,12 @@ protected synchronized void serviceInit(Configuration conf) MemoryTimelineStore.class, TimelineStore.class); conf.setClass(YarnConfiguration.TIMELINE_SERVICE_STATE_STORE_CLASS, MemoryTimelineStateStore.class, TimelineStateStore.class); + if (!useFixedPorts) { + String hostname = MiniYARNCluster.getHostname(); + conf.set(YarnConfiguration.TIMELINE_SERVICE_ADDRESS, hostname + ":0"); + conf.set(YarnConfiguration.TIMELINE_SERVICE_WEBAPP_ADDRESS, hostname + + ":0"); + } appHistoryServer.init(conf); super.serviceInit(conf); } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/TestMiniYarnCluster.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/TestMiniYarnCluster.java index 3e35bd0..e67a236 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/TestMiniYarnCluster.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/TestMiniYarnCluster.java @@ -26,6 +26,7 @@ import org.junit.Test; public class TestMiniYarnCluster { + @Test public void testTimelineServiceStartInMiniCluster() throws Exception { Configuration conf = new YarnConfiguration(); @@ -68,6 +69,14 @@ public void testTimelineServiceStartInMiniCluster() throws Exception { cluster = new MiniYARNCluster(TestMiniYarnCluster.class.getSimpleName(), numNodeManagers, numLocalDirs, numLogDirs, numLogDirs, enableAHS); cluster.init(conf); + + // Verify that the timeline-service starts on ephemeral ports by default + String hostname = MiniYARNCluster.getHostname(); + Assert.assertEquals(hostname + ":0", + conf.get(YarnConfiguration.TIMELINE_SERVICE_ADDRESS)); + Assert.assertEquals(hostname + ":0", + conf.get(YarnConfiguration.TIMELINE_SERVICE_WEBAPP_ADDRESS)); + cluster.start(); //Timeline service may sometime take a while to get started