From 9a97ff54e521342ea06996374ad29da32cfc9a93 Mon Sep 17 00:00:00 2001 From: Xuan Date: Wed, 28 Oct 2015 10:32:16 -0700 Subject: [PATCH] YARN-2859. ApplicationHistoryServer binds to default port 8188 in MiniYARNCluster. Contributed by Vinod Kumar Vavilapalli (cherry picked from commit 27414dac66f278b61fc23762204b01a1c508178a) (cherry picked from commit 9ce5069d16edefb0b2a24d6b7988347039624942) (cherry picked from commit 336be63dad59c58d7a72d2ea2c4a9f811a075eae) --- hadoop-yarn-project/CHANGES.txt | 3 +++ .../apache/hadoop/yarn/server/MiniYARNCluster.java | 14 ++++++++++---- .../hadoop/yarn/server/TestMiniYarnCluster.java | 9 +++++++++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 0f7d180fcde..155a73c7c46 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -48,6 +48,9 @@ Release 2.6.2 - UNRELEASED YARN-3798. ZKRMStateStore shouldn't create new session without occurrance of SESSIONEXPIED. (ozawa and Varun Saxena) + YARN-2859. ApplicationHistoryServer binds to default port 8188 in MiniYARNCluster. + (Vinod Kumar Vavilapalli via xgong) + Release 2.6.1 - 2015-09-23 INCOMPATIBLE CHANGES diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/MiniYARNCluster.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/MiniYARNCluster.java index cdaa9f278be..2b21c70141f 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/MiniYARNCluster.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/MiniYARNCluster.java @@ -246,9 +246,9 @@ public class MiniYARNCluster extends CompositeService { resourceManagers[i] = createResourceManager(); if (!useFixedPorts) { if (HAUtil.isHAEnabled(conf)) { - setHARMConfiguration(i, conf); + setHARMConfigurationWithEphemeralPorts(i, conf); } else { - setNonHARMConfiguration(conf); + setNonHARMConfigurationWithEphemeralPorts(conf); } } addService(new ResourceManagerWrapper(i)); @@ -268,7 +268,7 @@ public class MiniYARNCluster extends CompositeService { 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"); @@ -277,7 +277,7 @@ public class MiniYARNCluster extends CompositeService { 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"); @@ -682,6 +682,12 @@ public class MiniYARNCluster extends CompositeService { MemoryApplicationHistoryStore.class, ApplicationHistoryStore.class); conf.setClass(YarnConfiguration.TIMELINE_SERVICE_STORE, MemoryTimelineStore.class, TimelineStore.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 a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/TestMiniYarnCluster.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/TestMiniYarnCluster.java index 8a3c9e737c2..24088f1a9bd 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/TestMiniYarnCluster.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-tests/src/test/java/org/apache/hadoop/yarn/server/TestMiniYarnCluster.java @@ -24,6 +24,7 @@ import org.junit.Assert; import org.junit.Test; public class TestMiniYarnCluster { + @Test public void testTimelineServiceStartInMiniCluster() throws Exception { Configuration conf = new YarnConfiguration(); @@ -66,6 +67,14 @@ public class TestMiniYarnCluster { 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