Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 62C64200BB4 for ; Mon, 17 Oct 2016 20:31:04 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 6134B160AEC; Mon, 17 Oct 2016 18:31:04 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 57031160AFC for ; Mon, 17 Oct 2016 20:31:03 +0200 (CEST) Received: (qmail 39591 invoked by uid 500); 17 Oct 2016 18:30:59 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 37650 invoked by uid 99); 17 Oct 2016 18:30:57 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 17 Oct 2016 18:30:57 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 93828F1598; Mon, 17 Oct 2016 18:30:57 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: wangda@apache.org To: common-commits@hadoop.apache.org Date: Mon, 17 Oct 2016 18:31:12 -0000 Message-Id: In-Reply-To: <737beaf8901c42efb71f3eb45535cb6e@git.apache.org> References: <737beaf8901c42efb71f3eb45535cb6e@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [16/50] [abbrv] hadoop git commit: YARN-5698. [YARN-3368] Launch new YARN UI under hadoop web app port. (Sunil G via wangda) archived-at: Mon, 17 Oct 2016 18:31:04 -0000 YARN-5698. [YARN-3368] Launch new YARN UI under hadoop web app port. (Sunil G via wangda) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/e8a62afb Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/e8a62afb Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/e8a62afb Branch: refs/heads/YARN-3368 Commit: e8a62afb197de03b169efc8339231442f1300855 Parents: f9a16ce Author: Wangda Tan Authored: Wed Oct 12 13:22:20 2016 -0700 Committer: Wangda Tan Committed: Mon Oct 17 11:30:30 2016 -0700 ---------------------------------------------------------------------- .../hadoop/yarn/conf/YarnConfiguration.java | 21 ++---- .../org/apache/hadoop/yarn/webapp/WebApps.java | 8 +++ .../src/main/resources/yarn-default.xml | 20 ++---- .../server/resourcemanager/ResourceManager.java | 68 +++++++++++--------- .../src/main/webapp/config/default-config.js | 4 +- 5 files changed, 55 insertions(+), 66 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/e8a62afb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java index 8d4c14a..7cd8bd5 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/conf/YarnConfiguration.java @@ -266,25 +266,12 @@ public class YarnConfiguration extends Configuration { /** * Enable YARN WebApp V2. */ - public static final String RM_WEBAPP_UI2_ENABLE = RM_PREFIX + public static final String YARN_WEBAPP_UI2_ENABLE = "yarn." + "webapp.ui2.enable"; - public static final boolean DEFAULT_RM_WEBAPP_UI2_ENABLE = false; + public static final boolean DEFAULT_YARN_WEBAPP_UI2_ENABLE = false; - /** The address of the RM web ui2 application. */ - public static final String RM_WEBAPP_UI2_ADDRESS = RM_PREFIX - + "webapp.ui2.address"; - - public static final int DEFAULT_RM_WEBAPP_UI2_PORT = 8288; - public static final String DEFAULT_RM_WEBAPP_UI2_ADDRESS = "0.0.0.0:" + - DEFAULT_RM_WEBAPP_UI2_PORT; - - /** The https address of the RM web ui2 application.*/ - public static final String RM_WEBAPP_UI2_HTTPS_ADDRESS = - RM_PREFIX + "webapp.ui2.https.address"; - - public static final int DEFAULT_RM_WEBAPP_UI2_HTTPS_PORT = 8290; - public static final String DEFAULT_RM_WEBAPP_UI2_HTTPS_ADDRESS = "0.0.0.0:" - + DEFAULT_RM_WEBAPP_UI2_HTTPS_PORT; + public static final String YARN_WEBAPP_UI2_WARFILE_PATH = "yarn." + + "webapp.ui2.war-file-path"; public static final String RM_RESOURCE_TRACKER_ADDRESS = RM_PREFIX + "resource-tracker.address"; http://git-wip-us.apache.org/repos/asf/hadoop/blob/e8a62afb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java index 53cb3ee..d3b37d9 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/webapp/WebApps.java @@ -43,6 +43,7 @@ import org.apache.hadoop.security.http.RestCsrfPreventionFilter; import org.apache.hadoop.security.http.XFrameOptionsFilter; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.webapp.util.WebAppUtils; +import org.mortbay.jetty.webapp.WebAppContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -369,8 +370,15 @@ public class WebApps { } public WebApp start(WebApp webapp) { + return start(webapp, null); + } + + public WebApp start(WebApp webapp, WebAppContext ui2Context) { WebApp webApp = build(webapp); HttpServer2 httpServer = webApp.httpServer(); + if (ui2Context != null) { + httpServer.addContext(ui2Context, true); + } try { httpServer.start(); LOG.info("Web app " + name + " started at " http://git-wip-us.apache.org/repos/asf/hadoop/blob/e8a62afb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml index 0fb4110..2f13a6e 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml @@ -181,28 +181,16 @@ To enable RM web ui2 application. - yarn.resourcemanager.webapp.ui2.enable + yarn.webapp.ui2.enable false - The http address of the RM web ui2 application. - If only a host is provided as the value, - the webapp will be served on a random port. - - yarn.resourcemanager.webapp.ui2.address - ${yarn.resourcemanager.hostname}:8288 - - - - - The https address of the RM web ui2 application. - If only a host is provided as the value, - the webapp will be served on a random port. + Explicitly provide WAR file path for ui2 if needed. - yarn.resourcemanager.webapp.ui2.https.address - ${yarn.resourcemanager.hostname}:8290 + yarn.webapp.ui2.war-file-path + http://git-wip-us.apache.org/repos/asf/hadoop/blob/e8a62afb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java index f739e31..4c0a3bb 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java @@ -49,6 +49,7 @@ import org.apache.hadoop.util.JvmPauseMonitor; import org.apache.hadoop.util.ReflectionUtils; import org.apache.hadoop.util.ShutdownHookManager; import org.apache.hadoop.util.StringUtils; +import org.apache.hadoop.util.VersionInfo; import org.apache.hadoop.util.ZKUtil; import org.apache.hadoop.yarn.YarnUncaughtExceptionHandler; import org.apache.hadoop.yarn.api.records.ApplicationAttemptId; @@ -114,6 +115,7 @@ import org.apache.hadoop.yarn.webapp.WebApps; import org.apache.hadoop.yarn.webapp.WebApps.Builder; import org.apache.hadoop.yarn.webapp.util.WebAppUtils; import org.apache.zookeeper.server.auth.DigestAuthenticationProvider; +import org.mortbay.jetty.webapp.WebAppContext; import com.google.common.annotations.VisibleForTesting; import java.io.IOException; @@ -121,6 +123,8 @@ import java.io.InputStream; import java.io.PrintStream; import java.net.InetSocketAddress; import java.net.URI; +import java.net.URL; +import java.net.URLClassLoader; import java.nio.charset.Charset; import java.security.PrivilegedExceptionAction; import java.security.SecureRandom; @@ -148,6 +152,11 @@ public class ResourceManager extends CompositeService implements Recoverable { private static final Log LOG = LogFactory.getLog(ResourceManager.class); private static long clusterTimeStamp = System.currentTimeMillis(); + /* + * UI2 webapp name + */ + public static final String UI2_WEBAPP_NAME = "/ui2"; + /** * "Always On" services. Services that need to run always irrespective of * the HA state of the RM. @@ -940,26 +949,6 @@ public class ResourceManager extends CompositeService implements Recoverable { return builder; } - protected void startWebAppV2() throws IOException { - Configuration config = getConfig(); - final InetSocketAddress httpAddr = config.getSocketAddr( - YarnConfiguration.RM_WEBAPP_UI2_ADDRESS, - YarnConfiguration.DEFAULT_RM_WEBAPP_UI2_ADDRESS, - YarnConfiguration.DEFAULT_RM_WEBAPP_UI2_PORT); - final InetSocketAddress httpsAddr = config.getSocketAddr( - YarnConfiguration.RM_WEBAPP_UI2_HTTPS_ADDRESS, - YarnConfiguration.DEFAULT_RM_WEBAPP_UI2_HTTPS_ADDRESS, - YarnConfiguration.DEFAULT_RM_WEBAPP_UI2_HTTPS_PORT); - - HttpServer2.Builder builder = httpServerTemplateForRM(config, httpAddr, - httpsAddr, "rm"); - - HttpServer2 infoServer = builder.build(); - infoServer.start(); - - LOG.info("Web server init done"); - } - protected void startWepApp() { // Use the customized yarn filter instead of the standard kerberos filter to @@ -1074,9 +1063,36 @@ public class ResourceManager extends CompositeService implements Recoverable { builder.withAttribute(WebAppProxy.FETCHER_ATTRIBUTE, fetcher); String[] proxyParts = proxyHostAndPort.split(":"); builder.withAttribute(WebAppProxy.PROXY_HOST_ATTRIBUTE, proxyParts[0]); + } + + WebAppContext uiWebAppContext = null; + if (getConfig().getBoolean(YarnConfiguration.YARN_WEBAPP_UI2_ENABLE, + YarnConfiguration.DEFAULT_YARN_WEBAPP_UI2_ENABLE)) { + String webPath = UI2_WEBAPP_NAME; + String onDiskPath = getConfig() + .get(YarnConfiguration.YARN_WEBAPP_UI2_WARFILE_PATH); + if (null == onDiskPath) { + String war = "hadoop-yarn-ui-" + VersionInfo.getVersion() + ".war"; + URLClassLoader cl = (URLClassLoader) ClassLoader.getSystemClassLoader(); + URL url = cl.findResource(war); + + if (null == url) { + onDiskPath = ""; + } else { + onDiskPath = url.getFile(); + } + + LOG.info( + "New web UI war file name:" + war + ", and path:" + onDiskPath); + } + + uiWebAppContext = new WebAppContext(); + uiWebAppContext.setContextPath(webPath); + uiWebAppContext.setWar(onDiskPath); } - webApp = builder.start(new RMWebApp(this)); + + webApp = builder.start(new RMWebApp(this), uiWebAppContext); } /** @@ -1178,16 +1194,6 @@ public class ResourceManager extends CompositeService implements Recoverable { transitionToActive(); } - if (getConfig().getBoolean(YarnConfiguration.RM_WEBAPP_UI2_ENABLE, - YarnConfiguration.DEFAULT_RM_WEBAPP_UI2_ENABLE)) { - try { - startWebAppV2(); - LOG.info("Yarn WebApp UI 2 is started"); - } catch (Exception e) { - LOG.error("Failed to start Yarn web app v2:" + e.getMessage()); - } - } - startWepApp(); if (getConfig().getBoolean(YarnConfiguration.IS_MINI_YARN_CLUSTER, false)) { http://git-wip-us.apache.org/repos/asf/hadoop/blob/e8a62afb/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js index 92d0721..c5dbbea 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/config/default-config.js @@ -18,7 +18,7 @@ module.exports = { // Yarn UI App configurations hosts: { - localBaseAddress: "localhost:1337", + localBaseAddress: "", timelineWebAddress: "localhost:8188", rmWebAddress: "localhost:8088", protocolScheme: "http:" @@ -29,4 +29,4 @@ module.exports = { // Yarn UI App configurations metrics: 'ws/v1/cluster/metrics', node: 'ws/v1/node' }, -}; \ No newline at end of file +}; --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org For additional commands, e-mail: common-commits-help@hadoop.apache.org