From c60239eace26bf2ee0222360cc663d8d85708e1e Mon Sep 17 00:00:00 2001 From: Craig Condit Date: Fri, 27 Jul 2018 18:04:24 -0500 Subject: [PATCH] YARN-8263. DockerClient still touches hadoop.tmp.dir. --- .../linux/runtime/DockerLinuxContainerRuntime.java | 2 +- .../linux/runtime/docker/DockerClient.java | 53 ---------------------- .../linux/runtime/docker/DockerCommand.java | 2 +- .../linux/runtime/docker/TestDockerClient.java | 2 +- 4 files changed, 3 insertions(+), 56 deletions(-) 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/linux/runtime/DockerLinuxContainerRuntime.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DockerLinuxContainerRuntime.java index 88e6c91dac7..fed53da1256 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DockerLinuxContainerRuntime.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/DockerLinuxContainerRuntime.java @@ -298,7 +298,7 @@ public void initialize(Configuration conf, Context nmContext) throws ContainerExecutionException { this.nmContext = nmContext; this.conf = conf; - dockerClient = new DockerClient(conf); + dockerClient = new DockerClient(); allowedNetworks.clear(); defaultROMounts.clear(); defaultRWMounts.clear(); 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/linux/runtime/docker/DockerClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/DockerClient.java index fca707ce31c..3a516c46efe 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/DockerClient.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/DockerClient.java @@ -22,7 +22,6 @@ import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.classification.InterfaceStability; -import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.util.StringUtils; import org.apache.hadoop.yarn.api.records.ApplicationId; @@ -50,58 +49,6 @@ private static final String TMP_FILE_PREFIX = "docker."; private static final String TMP_FILE_SUFFIX = ".cmd"; private static final String TMP_ENV_FILE_SUFFIX = ".env"; - private final String tmpDirPath; - - public DockerClient(Configuration conf) throws ContainerExecutionException { - - String tmpDirBase = conf.get("hadoop.tmp.dir"); - if (tmpDirBase == null) { - throw new ContainerExecutionException("hadoop.tmp.dir not set!"); - } - tmpDirPath = tmpDirBase + "/nm-docker-cmds"; - - File tmpDir = new File(tmpDirPath); - if (!(tmpDir.exists() || tmpDir.mkdirs())) { - LOG.warn("Unable to create directory: " + tmpDirPath); - throw new ContainerExecutionException("Unable to create directory: " + - tmpDirPath); - } - } - - public String writeCommandToTempFile(DockerCommand cmd, String filePrefix) - throws ContainerExecutionException { - try { - File dockerCommandFile = File.createTempFile(TMP_FILE_PREFIX + filePrefix, - TMP_FILE_SUFFIX, new - File(tmpDirPath)); - try ( - Writer writer = new OutputStreamWriter( - new FileOutputStream(dockerCommandFile), "UTF-8"); - PrintWriter printWriter = new PrintWriter(writer); - ) { - printWriter.println("[docker-command-execution]"); - for (Map.Entry> entry : - cmd.getDockerCommandWithArguments().entrySet()) { - if (entry.getKey().contains("=")) { - throw new ContainerExecutionException( - "'=' found in entry for docker command file, key = " + entry - .getKey() + "; value = " + entry.getValue()); - } - if (entry.getValue().contains("\n")) { - throw new ContainerExecutionException( - "'\\n' found in entry for docker command file, key = " + entry - .getKey() + "; value = " + entry.getValue()); - } - printWriter.println(" " + entry.getKey() + "=" + StringUtils - .join(",", entry.getValue())); - } - return dockerCommandFile.getAbsolutePath(); - } - } catch (IOException e) { - LOG.warn("Unable to write docker command to temporary file!"); - throw new ContainerExecutionException(e); - } - } private String writeEnvFile(DockerRunCommand cmd, String filePrefix, File cmdDir) throws IOException { 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/linux/runtime/docker/DockerCommand.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/DockerCommand.java index 366457d11e4..552bdca58c1 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/DockerCommand.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/DockerCommand.java @@ -126,7 +126,7 @@ public PrivilegedOperation preparePrivilegedOperation( DockerCommand dockerCommand, String containerName, Map env, Configuration conf, Context nmContext) throws ContainerExecutionException { - DockerClient dockerClient = new DockerClient(conf); + DockerClient dockerClient = new DockerClient(); String commandFile = dockerClient.writeCommandToTempFile(dockerCommand, ContainerId.fromString(containerName), diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/TestDockerClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/TestDockerClient.java index efd7db5f1cf..31645bcde44 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/TestDockerClient.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/runtime/docker/TestDockerClient.java @@ -68,7 +68,7 @@ public void testWriteCommandToTempFile() throws Exception { doReturn(conf).when(mockContext).getConf(); doReturn(dirsHandler).when(mockContext).getLocalDirsHandler(); - DockerClient dockerClient = new DockerClient(conf); + DockerClient dockerClient = new DockerClient(); dirsHandler.init(conf); dirsHandler.start(); String tmpPath = dockerClient.writeCommandToTempFile(dockerCmd, cid, -- 2.15.2 (Apple Git-101.1)