Repository: hadoop
Updated Branches:
  refs/heads/branch-2 aedd5c4c1 -> e4ba92abe


YARN-5388. Deprecate and remove DockerContainerExecutor. (Daniel Templeton via 
kasha)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/e4ba92ab
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/e4ba92ab
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/e4ba92ab

Branch: refs/heads/branch-2
Commit: e4ba92abeecfd689bdc46b35abbd1da68520b6b0
Parents: aedd5c4
Author: Karthik Kambatla <ka...@cloudera.com>
Authored: Tue Oct 25 15:26:27 2016 -0700
Committer: Karthik Kambatla <ka...@cloudera.com>
Committed: Tue Oct 25 15:26:27 2016 -0700

----------------------------------------------------------------------
 .../nodemanager/DockerContainerExecutor.java    | 49 +++++++++++---------
 .../site/markdown/DockerContainerExecutor.md.vm |  9 ++++
 2 files changed, 37 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/e4ba92ab/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DockerContainerExecutor.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/DockerContainerExecutor.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DockerContainerExecutor.java
index 1390214..b2f746e 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DockerContainerExecutor.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DockerContainerExecutor.java
@@ -74,7 +74,13 @@ import com.google.common.base.Strings;
  * currently only supports simple authentication mode. It shares a lot of code
  * with the DefaultContainerExecutor (and it may make sense to pull out those
  * common pieces later).
+ * @deprecated The {@code DockerContainerExecutor} class has several
+ *  limitations, not the least of which is that if used, <b>all</b> containers
+ *  are launched in Docker containers. The {@link LinuxContainerExecutor}
+ *  supports selectively launching containers in Docker containers and should
+ *  be used instead.
  */
+@Deprecated
 public class DockerContainerExecutor extends ContainerExecutor {
   private static final Log LOG = LogFactory
     .getLog(DockerContainerExecutor.class);
@@ -324,11 +330,12 @@ public class DockerContainerExecutor extends 
ContainerExecutor {
     return 0;
   }
 
-  @Override
   /**
    * Filter the environment variables that may conflict with the ones set in
    * the docker image and write them out to an OutputStream.
+   * @throws IOException if there's an issue writing out the launch file.
    */
+  @Override
   public void writeLaunchEnv(OutputStream out, Map<String, String> environment,
       Map<Path, List<String>> resources, List<String> command, Path logDir,
       String user) throws IOException {
@@ -336,7 +343,7 @@ public class DockerContainerExecutor extends 
ContainerExecutor {
       ContainerLaunch.ShellScriptBuilder.create();
 
     //Remove environments that may conflict with the ones in Docker image.
-    Set<String> exclusionSet = new HashSet<String>();
+    Set<String> exclusionSet = new HashSet<>();
     
exclusionSet.add(YarnConfiguration.NM_DOCKER_CONTAINER_EXECUTOR_IMAGE_NAME);
     exclusionSet.add(ApplicationConstants.Environment.HADOOP_YARN_HOME.name());
     
exclusionSet.add(ApplicationConstants.Environment.HADOOP_COMMON_HOME.name());
@@ -347,14 +354,23 @@ public class DockerContainerExecutor extends 
ContainerExecutor {
     if (environment != null) {
       for (Map.Entry<String,String> env : environment.entrySet()) {
         if (!exclusionSet.contains(env.getKey())) {
-          sb.env(env.getKey().toString(), env.getValue().toString());
+          sb.env(env.getKey(), env.getValue());
         }
       }
     }
     if (resources != null) {
       for (Map.Entry<Path,List<String>> entry : resources.entrySet()) {
         for (String linkName : entry.getValue()) {
-          sb.symlink(entry.getKey(), new Path(linkName));
+          if (new Path(linkName).getName().equals(WILDCARD)) {
+            // If this is a wildcarded path, link to everything in the
+            // directory from the working directory
+            for (File wildLink : readDirAsUser(user, entry.getKey())) {
+              sb.symlink(new Path(wildLink.toString()),
+                  new Path(wildLink.getName()));
+            }
+          } else {
+            sb.symlink(entry.getKey(), new Path(linkName));
+          }
         }
       }
     }
@@ -370,26 +386,17 @@ public class DockerContainerExecutor extends 
ContainerExecutor {
 
     sb.command(command);
 
-    PrintStream pout = null;
-    PrintStream ps = null;
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    try {
-      pout = new PrintStream(out, false, "UTF-8");
-      if (LOG.isDebugEnabled()) {
-        ps = new PrintStream(baos, false, "UTF-8");
-        sb.write(ps);
-      }
+    try (PrintStream pout = new PrintStream(out, false, "UTF-8")) {
       sb.write(pout);
-
-    } finally {
-      if (out != null) {
-        out.close();
-      }
-      if (ps != null) {
-        ps.close();
-      }
     }
+
     if (LOG.isDebugEnabled()) {
+      ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+      try (PrintStream ps = new PrintStream(baos, false, "UTF-8")) {
+        sb.write(ps);
+      }
+
       LOG.debug("Script: " + baos.toString("UTF-8"));
     }
   }

http://git-wip-us.apache.org/repos/asf/hadoop/blob/e4ba92ab/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/DockerContainerExecutor.md.vm
----------------------------------------------------------------------
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/DockerContainerExecutor.md.vm
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/DockerContainerExecutor.md.vm
index fbfe04b..1fa94ca 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/DockerContainerExecutor.md.vm
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/DockerContainerExecutor.md.vm
@@ -22,6 +22,15 @@ Docker Container Executor
 * [Docker Image Requirements](#Docker_Image_Requirements)
 * [Working example of yarn launched docker 
containers](#Working_example_of_yarn_launched_docker_containers)
 
+DEPRECATED
+----------
+
+The Docker Container Executor is not a recommended solution for providing 
Docker
+support in a YARN cluster.  The Linux Container Executor should be used 
instead.
+The documentation on [using CGroups](NodeManagerCgroups.html) and
+[secure containers](SecureContainer.html) contain basic information about
+configuring the Linux Container Executor.
+
 Overview
 --------
 


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-commits-h...@hadoop.apache.org

Reply via email to