YARN-4031. Add JvmPauseMonitor to ApplicationHistoryServer and WebAppProxyServer (djp via rkanter)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/dc2340c6 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/dc2340c6 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/dc2340c6 Branch: refs/heads/HDFS-7285 Commit: dc2340c60e33f903f8fd34958ec746c989016191 Parents: 820f864 Author: Robert Kanter <rkan...@apache.org> Authored: Wed Aug 12 15:47:47 2015 -0700 Committer: Robert Kanter <rkan...@apache.org> Committed: Wed Aug 12 15:47:47 2015 -0700 ---------------------------------------------------------------------- hadoop-yarn-project/CHANGES.txt | 3 ++ .../ApplicationHistoryServer.java | 14 +++++++-- .../yarn/server/webproxy/WebAppProxyServer.java | 32 ++++++++++++++++++-- 3 files changed, 45 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/dc2340c6/hadoop-yarn-project/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 4c70a8a..9745d9d 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -396,6 +396,9 @@ Release 2.8.0 - UNRELEASED YARN-4026. Refactored ContainerAllocator to accept a list of priorites rather than a single priority. (Wangda Tan via jianhe) + YARN-4031. Add JvmPauseMonitor to ApplicationHistoryServer and + WebAppProxyServer (djp via rkanter) + OPTIMIZATIONS YARN-3339. TestDockerContainerExecutor should pull a single image and not http://git-wip-us.apache.org/repos/asf/hadoop/blob/dc2340c6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryServer.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryServer.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryServer.java index 88cd153..0ec27d7 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryServer.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryServer.java @@ -34,6 +34,7 @@ import org.apache.hadoop.service.CompositeService; import org.apache.hadoop.service.Service; import org.apache.hadoop.util.ExitUtil; import org.apache.hadoop.util.GenericOptionsParser; +import org.apache.hadoop.util.JvmPauseMonitor; import org.apache.hadoop.util.ReflectionUtils; import org.apache.hadoop.util.ShutdownHookManager; import org.apache.hadoop.util.StringUtils; @@ -73,6 +74,7 @@ public class ApplicationHistoryServer extends CompositeService { private TimelineDelegationTokenSecretManagerService secretManagerService; private TimelineDataManager timelineDataManager; private WebApp webApp; + private JvmPauseMonitor pauseMonitor; public ApplicationHistoryServer() { super(ApplicationHistoryServer.class.getName()); @@ -96,7 +98,9 @@ public class ApplicationHistoryServer extends CompositeService { addService((Service) historyManager); DefaultMetricsSystem.initialize("ApplicationHistoryServer"); - JvmMetrics.initSingleton("ApplicationHistoryServer", null); + JvmMetrics jm = JvmMetrics.initSingleton("ApplicationHistoryServer", null); + pauseMonitor = new JvmPauseMonitor(conf); + jm.setPauseMonitor(pauseMonitor); super.serviceInit(conf); } @@ -107,6 +111,10 @@ public class ApplicationHistoryServer extends CompositeService { } catch(IOException ie) { throw new YarnRuntimeException("Failed to login", ie); } + + if (pauseMonitor != null) { + pauseMonitor.start(); + } super.serviceStart(); startWebApp(); } @@ -116,7 +124,9 @@ public class ApplicationHistoryServer extends CompositeService { if (webApp != null) { webApp.stop(); } - + if (pauseMonitor != null) { + pauseMonitor.stop(); + } DefaultMetricsSystem.shutdown(); super.serviceStop(); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/dc2340c6/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServer.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServer.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServer.java index b1c563c..4c1caa6 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServer.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServer.java @@ -22,10 +22,13 @@ import java.io.IOException; import java.net.InetSocketAddress; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem; +import org.apache.hadoop.metrics2.source.JvmMetrics; import org.apache.hadoop.security.SecurityUtil; import org.apache.hadoop.service.CompositeService; import org.apache.hadoop.util.ExitUtil; import org.apache.hadoop.util.GenericOptionsParser; +import org.apache.hadoop.util.JvmPauseMonitor; import org.apache.hadoop.util.ShutdownHookManager; import org.apache.hadoop.util.StringUtils; import org.apache.hadoop.yarn.YarnUncaughtExceptionHandler; @@ -48,7 +51,9 @@ public class WebAppProxyServer extends CompositeService { WebAppProxyServer.class); private WebAppProxy proxy = null; - + + private JvmPauseMonitor pauseMonitor; + public WebAppProxyServer() { super(WebAppProxyServer.class.getName()); } @@ -56,12 +61,35 @@ public class WebAppProxyServer extends CompositeService { @Override protected void serviceInit(Configuration conf) throws Exception { Configuration config = new YarnConfiguration(conf); - doSecureLogin(conf); + doSecureLogin(conf); proxy = new WebAppProxy(); addService(proxy); + + DefaultMetricsSystem.initialize("WebAppProxyServer"); + JvmMetrics jm = JvmMetrics.initSingleton("WebAppProxyServer", null); + pauseMonitor = new JvmPauseMonitor(conf); + jm.setPauseMonitor(pauseMonitor); + super.serviceInit(config); } + @Override + protected void serviceStart() throws Exception { + if (pauseMonitor != null) { + pauseMonitor.start(); + } + super.serviceStart(); + } + + @Override + protected void serviceStop() throws Exception { + super.serviceStop(); + DefaultMetricsSystem.shutdown(); + if (pauseMonitor != null) { + pauseMonitor.stop(); + } + } + /** * Log in as the Kerberose principal designated for the proxy * @param conf the configuration holding this information in it.