Selaa lähdekoodia

HADOOP-17594. DistCp: Expose the JobId for applications executing through run method (#2786). Contributed by Ayush Saxena.

Signed-off-by: Mingliang Liu <liuml07@apache.org>
Signed-off-by: Steve Loughran <stevel@apache.org>
Ayush Saxena 4 vuotta sitten
vanhempi
commit
162923e799

+ 2 - 0
hadoop-tools/hadoop-distcp/src/main/java/org/apache/hadoop/tools/DistCp.java

@@ -214,6 +214,8 @@ public class DistCp extends Configured implements Tool {
     String jobID = job.getJobID().toString();
     job.getConfiguration().set(DistCpConstants.CONF_LABEL_DISTCP_JOB_ID,
         jobID);
+    // Set the jobId for the applications running through run method.
+    getConf().set(DistCpConstants.CONF_LABEL_DISTCP_JOB_ID, jobID);
     LOG.info("DistCp job-id: " + jobID);
 
     return job;

+ 13 - 0
hadoop-tools/hadoop-distcp/src/test/java/org/apache/hadoop/tools/contract/AbstractContractDistCpTest.java

@@ -19,6 +19,7 @@
 package org.apache.hadoop.tools.contract;
 
 import static org.apache.hadoop.fs.contract.ContractTestUtils.*;
+import static org.apache.hadoop.tools.DistCpConstants.CONF_LABEL_DISTCP_JOB_ID;
 
 import java.io.IOException;
 import java.util.Collections;
@@ -42,6 +43,7 @@ import org.apache.hadoop.tools.DistCp;
 import org.apache.hadoop.tools.DistCpConstants;
 import org.apache.hadoop.tools.DistCpOptions;
 import org.apache.hadoop.tools.mapred.CopyMapper;
+import org.apache.hadoop.tools.util.DistCpTestUtils;
 
 import org.junit.Before;
 import org.junit.Rule;
@@ -464,6 +466,17 @@ public abstract class AbstractContractDistCpTest
     largeFiles(remoteFS, remoteDir, localFS, localDir);
   }
 
+  @Test
+  public void testSetJobId() throws Exception {
+    describe("check jobId is set in the conf");
+    remoteFS.create(new Path(remoteDir, "file1")).close();
+    DistCpTestUtils
+        .assertRunDistCp(DistCpConstants.SUCCESS, remoteDir.toString(),
+            localDir.toString(), null, conf);
+    assertNotNull("DistCp job id isn't set",
+        conf.get(CONF_LABEL_DISTCP_JOB_ID));
+  }
+
   /**
    * Executes a DistCp using a file system sub-tree with multiple nesting
    * levels.