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 86e8a95..f57acb5 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 @@ -1106,7 +1106,11 @@ public static boolean isAclEnabled(Configuration conf) { public static final String NM_VMEM_PMEM_RATIO = NM_PREFIX + "vmem-pmem-ratio"; public static final float DEFAULT_NM_VMEM_PMEM_RATIO = 2.1f; - + + public static final String NM_CONTAINER_MONITOR_ENABLED = + NM_PREFIX + "container-monitor.enabled"; + public static final boolean DEFAULT_NM_CONTAINER_MONITOR_ENABLED = true; + /** Number of Virtual CPU Cores which can be allocated for containers.*/ public static final String NM_VCORES = NM_PREFIX + "resource.cpu-vcores"; public static final int DEFAULT_NM_VCORES = 8; diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitorImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitorImpl.java index c456bde..a04a914 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitorImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitorImpl.java @@ -171,7 +171,7 @@ protected void serviceInit(Configuration conf) throws Exception { LOG.info("Physical memory check enabled: " + pmemCheckEnabled); LOG.info("Virtual memory check enabled: " + vmemCheckEnabled); - containersMonitorEnabled = isEnabled(); + containersMonitorEnabled = isContainerMonitorEnabled(); LOG.info("ContainersMonitor enabled: " + containersMonitorEnabled); nodeCpuPercentageForYARN = @@ -204,23 +204,24 @@ protected void serviceInit(Configuration conf) throws Exception { super.serviceInit(conf); } - private boolean isEnabled() { + private boolean isContainerMonitorEnabled() { + return conf.getBoolean(YarnConfiguration.NM_CONTAINER_MONITOR_ENABLED, + YarnConfiguration.DEFAULT_NM_CONTAINER_MONITOR_ENABLED); + } + + private boolean isResourceCalculatorAvailable() { if (resourceCalculatorPlugin == null) { - LOG.info("ResourceCalculatorPlugin is unavailable on this system. " - + this.getClass().getName() + " is disabled."); - return false; - } - if (ResourceCalculatorProcessTree.getResourceCalculatorProcessTree("0", processTreeClass, conf) == null) { - LOG.info("ResourceCalculatorProcessTree is unavailable on this system. " - + this.getClass().getName() + " is disabled."); - return false; + LOG.info("ResourceCalculatorPlugin is unavailable on this system. " + this + .getClass().getName() + " is disabled."); + return false; } - if (!(isPmemCheckEnabled() || isVmemCheckEnabled())) { - LOG.info("Neither virtual-memory nor physical-memory monitoring is " + - "needed. Not running the monitor-thread"); + if (ResourceCalculatorProcessTree + .getResourceCalculatorProcessTree("0", processTreeClass, conf) + == null) { + LOG.info("ResourceCalculatorProcessTree is unavailable on this system. " + + this.getClass().getName() + " is disabled."); return false; } - return true; } @@ -462,7 +463,7 @@ public void run() { } // End of initializing any uninitialized processTrees - if (pId == null) { + if (pId == null || !isResourceCalculatorAvailable()) { continue; // processTree cannot be tracked }