From 9ce5069d16edefb0b2a24d6b7988347039624942 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) --- 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 4c98b87ac4f..e5534a5da41 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -1851,6 +1851,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 713825abd99..aa796ed0e1d 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 @@ -252,9 +252,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)); @@ -274,7 +274,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"); @@ -283,7 +283,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"); @@ -704,6 +704,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 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 3e35bd0ef7e..e67a236d1a5 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 @@ -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