Преглед изворни кода

svn merge -c 1467120 FIXES: MAPREDUCE-5059. Change average merge time on Job overview page to be the time delta between the end of the shuffle and the start of the reduce. Contributed by Omkar Vinit Joshi

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.23@1483885 13f79535-47bb-0310-9956-ffa450edef68
Jason Darrell Lowe пре 12 година
родитељ
комит
9f8ddc3a98

+ 4 - 0
hadoop-mapreduce-project/CHANGES.txt

@@ -11,6 +11,10 @@ Release 0.23.8 - UNRELEASED
     MAPREDUCE-5065. DistCp should skip checksum comparisons if block-sizes
     are different on source/target (Mithun Radhakrishnan via kihwal)
 
+    MAPREDUCE-5059. Change average merge time on Job overview page to be the
+    time delta between the end of the shuffle and the start of the reduce.
+    (Omkar Vinit Joshi via jlowe)
+
   OPTIMIZATIONS
 
   BUG FIXES

+ 1 - 1
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/main/java/org/apache/hadoop/mapreduce/v2/hs/webapp/dao/JobInfo.java

@@ -287,7 +287,7 @@ public class JobInfo {
             avgShuffleTime += (attempt.getShuffleFinishTime() - attempt
                 .getLaunchTime());
             avgMergeTime += attempt.getSortFinishTime()
-                - attempt.getLaunchTime();
+                - attempt.getShuffleFinishTime();
             avgReduceTime += (attempt.getFinishTime() - attempt
                 .getShuffleFinishTime());
           }

+ 7 - 7
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/test/java/org/apache/hadoop/mapreduce/v2/hs/TestJobHistoryEntities.java

@@ -95,11 +95,11 @@ public class TestJobHistoryEntities {
     assertEquals(1, completedJob.getAMInfos().size());
     assertEquals(10, completedJob.getCompletedMaps());
     assertEquals(1, completedJob.getCompletedReduces());
-    assertEquals(11, completedJob.getTasks().size());
+    assertEquals(12, completedJob.getTasks().size());
     //Verify tasks loaded at this point.
     assertEquals(true, completedJob.tasksLoaded.get());
     assertEquals(10, completedJob.getTasks(TaskType.MAP).size());
-    assertEquals(1, completedJob.getTasks(TaskType.REDUCE).size());
+    assertEquals(2, completedJob.getTasks(TaskType.REDUCE).size());
     assertEquals("user", completedJob.getUserName());
     assertEquals(JobState.SUCCEEDED, completedJob.getState());
     JobReport jobReport = completedJob.getReport();
@@ -120,7 +120,7 @@ public class TestJobHistoryEntities {
     Map<TaskId, Task> mapTasks = completedJob.getTasks(TaskType.MAP);
     Map<TaskId, Task> reduceTasks = completedJob.getTasks(TaskType.REDUCE);
     assertEquals(10, mapTasks.size());
-    assertEquals(1, reduceTasks.size());
+    assertEquals(2, reduceTasks.size());
     
     Task mt1 = mapTasks.get(mt1Id);
     assertEquals(1, mt1.getAttempts().size());
@@ -135,7 +135,7 @@ public class TestJobHistoryEntities {
     assertEquals(TaskState.SUCCEEDED, rt1Report.getTaskState());
     assertEquals(rt1Id, rt1Report.getTaskId());
   }
-  
+
   @Test (timeout=50000)
   public void testCompletedTaskAttempt() throws Exception {
     HistoryFileInfo info = mock(HistoryFileInfo.class);
@@ -197,12 +197,12 @@ public class TestJobHistoryEntities {
     assertEquals("default",completedJob.getQueueName());
     // progress
     assertEquals(1.0, completedJob.getProgress(),0.001);
-    // 11 rows in answer
-    assertEquals(11,completedJob.getTaskAttemptCompletionEvents(0,1000).length);
+    // 12 rows in answer
+    assertEquals(12,completedJob.getTaskAttemptCompletionEvents(0,1000).length);
     // select first 10 rows
     assertEquals(10,completedJob.getTaskAttemptCompletionEvents(0,10).length);
     // select 5-10 rows include 5th
-    assertEquals(6,completedJob.getTaskAttemptCompletionEvents(5,10).length);
+    assertEquals(7,completedJob.getTaskAttemptCompletionEvents(5,10).length);
 
     // without errors
     assertEquals(1,completedJob.getDiagnostics().size());

+ 69 - 0
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/test/java/org/apache/hadoop/mapreduce/v2/hs/webapp/dao/TestJobInfo.java

@@ -0,0 +1,69 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.mapreduce.v2.hs.webapp.dao;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.IOException;
+
+import junit.framework.Assert;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.mapred.JobACLsManager;
+import org.apache.hadoop.mapreduce.v2.api.records.JobId;
+import org.apache.hadoop.mapreduce.v2.hs.HistoryFileManager.HistoryFileInfo;
+import org.apache.hadoop.mapreduce.v2.hs.CompletedJob;
+import org.apache.hadoop.mapreduce.v2.hs.TestJobHistoryEntities;
+import org.apache.hadoop.mapreduce.v2.util.MRBuilderUtils;
+import org.junit.Test;
+
+public class TestJobInfo {
+
+  @Test(timeout = 10000)
+  public void testAverageMergeTime() throws IOException {
+    String historyFileName =
+        "job_1329348432655_0001-1329348443227-user-Sleep+job-1329348468601-10-1-SUCCEEDED-default.jhist";
+    String confFileName =
+        "job_1329348432655_0001_conf.xml";
+    Configuration conf = new Configuration();
+    JobACLsManager jobAclsMgr = new JobACLsManager(conf);
+    Path fulleHistoryPath =
+        new Path(TestJobHistoryEntities.class.getClassLoader()
+            .getResource(historyFileName)
+            .getFile());
+    Path fullConfPath =
+        new Path(TestJobHistoryEntities.class.getClassLoader()
+            .getResource(confFileName)
+            .getFile());
+
+    HistoryFileInfo info = mock(HistoryFileInfo.class);
+    when(info.getConfFile()).thenReturn(fullConfPath);
+
+    JobId jobId = MRBuilderUtils.newJobId(1329348432655l, 1, 1);
+    CompletedJob completedJob =
+        new CompletedJob(conf, jobId, fulleHistoryPath, true, "user",
+            info, jobAclsMgr);
+    JobInfo jobInfo = new JobInfo(completedJob);
+    // There are 2 tasks with merge time of 45 and 55 respectively. So average
+    // merge time should be 50.
+    Assert.assertEquals(50L, jobInfo.getAvgMergeTime().longValue());
+  }
+}

Разлика између датотеке није приказан због своје велике величине
+ 2 - 0
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/src/test/resources/job_1329348432655_0001-1329348443227-user-Sleep+job-1329348468601-10-1-SUCCEEDED-default.jhist


Неке датотеке нису приказане због велике количине промена