You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by sz...@apache.org on 2018/04/02 22:28:42 UTC
hadoop git commit: YARN-6739. Crash NM at start time if
oversubscription is on but LinuxContainerExcutor or cgroup is off.
Contributed by Haibo Chen.
Repository: hadoop
Updated Branches:
refs/heads/YARN-1011 13d61cc42 -> 8ea3f763d
YARN-6739. Crash NM at start time if oversubscription is on but LinuxContainerExcutor or cgroup is off. Contributed by Haibo Chen.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/8ea3f763
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/8ea3f763
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/8ea3f763
Branch: refs/heads/YARN-1011
Commit: 8ea3f763dc2a030a0e3914447b00aacdf1c3c5ff
Parents: 13d61cc
Author: Miklos Szegedi <sz...@apache.org>
Authored: Mon Apr 2 15:09:52 2018 -0700
Committer: Miklos Szegedi <sz...@apache.org>
Committed: Mon Apr 2 15:09:52 2018 -0700
----------------------------------------------------------------------
.../monitor/ContainersMonitorImpl.java | 27 ++++++++++++++++++++
1 file changed, 27 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/8ea3f763/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
----------------------------------------------------------------------
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 4863ee2..540e8eb 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
@@ -20,6 +20,9 @@ package org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
+import org.apache.hadoop.yarn.exceptions.YarnException;
+import org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor;
+import org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.ResourceHandlerModule;
import org.apache.hadoop.yarn.server.nodemanager.metrics.NodeManagerMetrics;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -184,6 +187,7 @@ public class ContainersMonitorImpl extends AbstractService implements
initializeOverAllocation(conf);
if (context.isOverAllocationEnabled()) {
+ checkOverAllocationPrerequisites();
pmemCheckEnabled = true;
LOG.info("Force enabling physical memory checks because " +
"overallocation is enabled");
@@ -223,6 +227,29 @@ public class ContainersMonitorImpl extends AbstractService implements
super.serviceInit(this.conf);
}
+ /**
+ * Check all prerequisites for NM over-allocation.
+ */
+ private void checkOverAllocationPrerequisites() throws YarnException {
+ // LinuxContainerExecutor is required to enable overallocation
+ if (!(containerExecutor instanceof LinuxContainerExecutor)) {
+ throw new YarnException(LinuxContainerExecutor.class.getName() +
+ " is required for overallocation");
+ }
+ if (ResourceHandlerModule.getCGroupsHandler() == null) {
+ throw new YarnException("CGroups must be enabled to support" +
+ " overallocation");
+ }
+ if (ResourceHandlerModule.getCpuResourceHandler() == null) {
+ throw new YarnException(
+ "CGroups cpu isolation must be enabled to support overallocation");
+ }
+ if (ResourceHandlerModule.getMemoryResourceHandler() == null) {
+ throw new YarnException(
+ "CGroups memory isolation must be enabled for overallocation");
+ }
+ }
+
private boolean isContainerMonitorEnabled() {
return conf.getBoolean(YarnConfiguration.NM_CONTAINER_MONITOR_ENABLED,
YarnConfiguration.DEFAULT_NM_CONTAINER_MONITOR_ENABLED);
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org