Author: acmurthy Date: Sat Apr 6 05:34:58 2013 New Revision: 1465191 URL: http://svn.apache.org/r1465191 Log: MAPREDUCE-5129. Allow tags to JobHistory for deeper analytics. Contributed by Billie Rinaldi.
Modified: hadoop/common/branches/branch-1/CHANGES.txt hadoop/common/branches/branch-1/src/mapred/org/apache/hadoop/mapred/JobConf.java hadoop/common/branches/branch-1/src/mapred/org/apache/hadoop/mapred/JobHistory.java hadoop/common/branches/branch-1/src/test/org/apache/hadoop/mapred/TestJobHistory.java hadoop/common/branches/branch-1/src/tools/org/apache/hadoop/tools/rumen/Job20LineHistoryEventEmitter.java hadoop/common/branches/branch-1/src/tools/org/apache/hadoop/tools/rumen/JobSubmittedEvent.java Modified: hadoop/common/branches/branch-1/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/CHANGES.txt?rev=1465191&r1=1465190&r2=1465191&view=diff ============================================================================== --- hadoop/common/branches/branch-1/CHANGES.txt (original) +++ hadoop/common/branches/branch-1/CHANGES.txt Sat Apr 6 05:34:58 2013 @@ -233,6 +233,9 @@ Release 1.2.0 - unreleased HADOOP-9071. Configure ivy log levels for resolve/retrieve. (Giridharan Kesavan via suresh) + MAPREDUCE-5129. Allow tags to JobHistory for deeper analytics. (billie via + acmurthy) + BUG FIXES HADOOP-9451. Fault single-layer config if node group topology is enabled. Modified: hadoop/common/branches/branch-1/src/mapred/org/apache/hadoop/mapred/JobConf.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/src/mapred/org/apache/hadoop/mapred/JobConf.java?rev=1465191&r1=1465190&r2=1465191&view=diff ============================================================================== --- hadoop/common/branches/branch-1/src/mapred/org/apache/hadoop/mapred/JobConf.java (original) +++ hadoop/common/branches/branch-1/src/mapred/org/apache/hadoop/mapred/JobConf.java Sat Apr 6 05:34:58 2013 @@ -327,6 +327,8 @@ public class JobConf extends Configurati public static final String WORKFLOW_ADJACENCY_PREFIX_PATTERN = "^mapreduce\\.workflow\\.adjacency\\..+"; + public static final String WORKFLOW_TAGS = "mapreduce.workflow.tags"; + public static final String MAPREDUCE_RECOVER_JOB = "mapreduce.job.restart.recover"; Modified: hadoop/common/branches/branch-1/src/mapred/org/apache/hadoop/mapred/JobHistory.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/src/mapred/org/apache/hadoop/mapred/JobHistory.java?rev=1465191&r1=1465190&r2=1465191&view=diff ============================================================================== --- hadoop/common/branches/branch-1/src/mapred/org/apache/hadoop/mapred/JobHistory.java (original) +++ hadoop/common/branches/branch-1/src/mapred/org/apache/hadoop/mapred/JobHistory.java Sat Apr 6 05:34:58 2013 @@ -476,7 +476,8 @@ public class JobHistory { SHUFFLE_FINISHED, SORT_FINISHED, COUNTERS, SPLITS, JOB_PRIORITY, HTTP_PORT, TRACKER_NAME, STATE_STRING, VERSION, MAP_COUNTERS, REDUCE_COUNTERS, VIEW_JOB, MODIFY_JOB, JOB_QUEUE, FAIL_REASON, LOCALITY, AVATAAR, - WORKFLOW_ID, WORKFLOW_NAME, WORKFLOW_NODE_NAME, WORKFLOW_ADJACENCIES + WORKFLOW_ID, WORKFLOW_NAME, WORKFLOW_NODE_NAME, WORKFLOW_ADJACENCIES, + WORKFLOW_TAGS } /** @@ -1781,15 +1782,17 @@ public class JobHistory { Keys.VIEW_JOB, Keys.MODIFY_JOB, Keys.JOB_QUEUE, Keys.WORKFLOW_ID, Keys.WORKFLOW_NAME, Keys.WORKFLOW_NODE_NAME, - Keys.WORKFLOW_ADJACENCIES}, + Keys.WORKFLOW_ADJACENCIES, + Keys.WORKFLOW_TAGS}, new String[]{jobId.toString(), jobName, user, String.valueOf(submitTime) , jobConfPath, viewJobACL, modifyJobACL, jobConf.getQueueName(), - jobConf.get(jobConf.WORKFLOW_ID, ""), - jobConf.get(jobConf.WORKFLOW_NAME, ""), - jobConf.get(jobConf.WORKFLOW_NODE_NAME, ""), - getWorkflowAdjacencies(jobConf) + jobConf.get(JobConf.WORKFLOW_ID, ""), + jobConf.get(JobConf.WORKFLOW_NAME, ""), + jobConf.get(JobConf.WORKFLOW_NODE_NAME, ""), + getWorkflowAdjacencies(jobConf), + jobConf.get(JobConf.WORKFLOW_TAGS, ""), }, jobId ); Modified: hadoop/common/branches/branch-1/src/test/org/apache/hadoop/mapred/TestJobHistory.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/src/test/org/apache/hadoop/mapred/TestJobHistory.java?rev=1465191&r1=1465190&r2=1465191&view=diff ============================================================================== --- hadoop/common/branches/branch-1/src/test/org/apache/hadoop/mapred/TestJobHistory.java (original) +++ hadoop/common/branches/branch-1/src/test/org/apache/hadoop/mapred/TestJobHistory.java Sat Apr 6 05:34:58 2013 @@ -841,6 +841,18 @@ public class TestJobHistory extends Test // Validate the job queue name assertTrue(jobInfo.getJobQueue().equals(conf.getQueueName())); + + // Validate the workflow properties + assertTrue(jobInfo.get(Keys.WORKFLOW_ID).equals( + conf.get(JobConf.WORKFLOW_ID, ""))); + assertTrue(jobInfo.get(Keys.WORKFLOW_NAME).equals( + conf.get(JobConf.WORKFLOW_NAME, ""))); + assertTrue(jobInfo.get(Keys.WORKFLOW_NODE_NAME).equals( + conf.get(JobConf.WORKFLOW_NODE_NAME, ""))); + assertTrue(jobInfo.get(Keys.WORKFLOW_ADJACENCIES).equals( + JobHistory.JobInfo.getWorkflowAdjacencies(conf))); + assertTrue(jobInfo.get(Keys.WORKFLOW_TAGS).equals( + conf.get(JobConf.WORKFLOW_TAGS, ""))); } public void testDoneFolderOnHDFS() throws IOException { @@ -998,7 +1010,21 @@ public class TestJobHistory extends Test // no queue admins for default queue conf.set(QueueManager.toFullPropertyName( "default", QueueACL.ADMINISTER_JOBS.getAclName()), " "); - + + // set workflow properties + conf.set(JobConf.WORKFLOW_ID, "workflowId1"); + conf.set(JobConf.WORKFLOW_NAME, "workflowName1"); + String workflowNodeName = "A"; + conf.set(JobConf.WORKFLOW_NODE_NAME, workflowNodeName); + conf.set(JobConf.WORKFLOW_ADJACENCY_PREFIX_STRING + workflowNodeName, + "BC"); + conf.set(JobConf.WORKFLOW_ADJACENCY_PREFIX_STRING + workflowNodeName, + "DEF"); + conf.set(JobConf.WORKFLOW_ADJACENCY_PREFIX_STRING + "DEF", "G"); + conf.set(JobConf.WORKFLOW_ADJACENCY_PREFIX_STRING + "Z", + workflowNodeName); + conf.set(JobConf.WORKFLOW_TAGS, "tag1,tag2"); + mr = new MiniMRCluster(2, "file:///", 3, null, null, conf); // run the TCs Modified: hadoop/common/branches/branch-1/src/tools/org/apache/hadoop/tools/rumen/Job20LineHistoryEventEmitter.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/src/tools/org/apache/hadoop/tools/rumen/Job20LineHistoryEventEmitter.java?rev=1465191&r1=1465190&r2=1465191&view=diff ============================================================================== --- hadoop/common/branches/branch-1/src/tools/org/apache/hadoop/tools/rumen/Job20LineHistoryEventEmitter.java (original) +++ hadoop/common/branches/branch-1/src/tools/org/apache/hadoop/tools/rumen/Job20LineHistoryEventEmitter.java Sat Apr 6 05:34:58 2013 @@ -82,6 +82,10 @@ public class Job20LineHistoryEventEmitte if (workflowAdjacencies == null) { workflowAdjacencies = ""; } + String workflowTags = line.get("WORKFLOW_TAGS"); + if (workflowTags == null) { + workflowTags = ""; + } if (submitTime != null) { Job20LineHistoryEventEmitter that = @@ -94,7 +98,7 @@ public class Job20LineHistoryEventEmitte return new JobSubmittedEvent(jobID, jobName, user == null ? "nulluser" : user, that.originalSubmitTime, jobConf, jobACLs, queueName, workflowId, workflowName, - workflowNodeName, workflowAdjacencies); + workflowNodeName, workflowAdjacencies, workflowTags); } return null; Modified: hadoop/common/branches/branch-1/src/tools/org/apache/hadoop/tools/rumen/JobSubmittedEvent.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/src/tools/org/apache/hadoop/tools/rumen/JobSubmittedEvent.java?rev=1465191&r1=1465190&r2=1465191&view=diff ============================================================================== --- hadoop/common/branches/branch-1/src/tools/org/apache/hadoop/tools/rumen/JobSubmittedEvent.java (original) +++ hadoop/common/branches/branch-1/src/tools/org/apache/hadoop/tools/rumen/JobSubmittedEvent.java Sat Apr 6 05:34:58 2013 @@ -42,11 +42,12 @@ public class JobSubmittedEvent implement private String workflowName; private String workflowNodeName; private String workflowAdjacencies; + private String workflowTags; /** * @deprecated Use * {@link #JobSubmittedEvent(JobID, String, String, long, String, - * Map, String)} + * Map, String, String, String, String, String, String)} * instead. */ @Deprecated @@ -59,7 +60,7 @@ public class JobSubmittedEvent implement /** * @deprecated Use * {@link #JobSubmittedEvent(JobID, String, String, long, String, - * Map, String)} + * Map, String, String, String, String, String, String)} * instead. */ @Deprecated @@ -71,6 +72,22 @@ public class JobSubmittedEvent implement } /** + * @deprecated Use + * {@link #JobSubmittedEvent(JobID, String, String, long, String, + * Map, String, String, String, String, String, String)} + * instead. + */ + @Deprecated + public JobSubmittedEvent(JobID id, String jobName, String userName, + long submitTime, String jobConfPath, + Map<JobACL, AccessControlList> jobACLs, String queue, + String workflowId, String workflowName, String workflowNodeName, + String workflowAdjacencies) { + this(id, jobName, userName, submitTime, jobConfPath, jobACLs, queue, + workflowId, workflowName, workflowNodeName, workflowAdjacencies, ""); + } + + /** * Create an event to record job submission * @param id The job Id of the job * @param jobName Name of the job @@ -83,12 +100,13 @@ public class JobSubmittedEvent implement * @param workflowName the workflow name * @param workflowNodeName the workflow node name * @param workflowAdjacencies the workflow adjacencies + * @param workflowTags Comma-separated workflow tags */ public JobSubmittedEvent(JobID id, String jobName, String userName, long submitTime, String jobConfPath, Map<JobACL, AccessControlList> jobACLs, String queue, String workflowId, String workflowName, String workflowNodeName, - String workflowAdjacencies) { + String workflowAdjacencies, String workflowTags) { this.jobId = id; this.jobName = jobName; this.userName = userName; @@ -100,6 +118,7 @@ public class JobSubmittedEvent implement this.workflowName = workflowName; this.workflowNodeName = workflowNodeName; this.workflowAdjacencies = workflowAdjacencies; + this.workflowTags = workflowTags; } /** Get the Job Id */ @@ -136,6 +155,10 @@ public class JobSubmittedEvent implement public String getWorkflowAdjacencies() { return workflowAdjacencies; } + /** Get the workflow tags */ + public String getWorkflowTags() { + return workflowTags; + } /** Get the event type */ public EventType getEventType() { return EventType.JOB_SUBMITTED; }