MAPREDUCE-2800. Set final progress for tasks to ensure all task information is correctly logged to JobHistory. Contributed by Siddharth Seth.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1165930 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Arun Murthy 2011-09-06 23:36:19 +00:00
parent 3a3f277017
commit 03c1015d6e
4 changed files with 22 additions and 1 deletions

View File

@ -1207,6 +1207,9 @@ Release 0.23.0 - Unreleased
MAPREDUCE-2687. Fix NodeManager to use the right version of MAPREDUCE-2687. Fix NodeManager to use the right version of
LocalDirAllocator.getLocalPathToWrite. (mahadev & acmurthy) LocalDirAllocator.getLocalPathToWrite. (mahadev & acmurthy)
MAPREDUCE-2800. Set final progress for tasks to ensure all task information
is correctly logged to JobHistory. (Siddharth Seth via acmurthy)
Release 0.22.0 - Unreleased Release 0.22.0 - Unreleased
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -1380,6 +1380,8 @@ public abstract class TaskAttemptImpl implements
// for it // for it
taskAttempt.taskAttemptListener.unregister( taskAttempt.taskAttemptListener.unregister(
taskAttempt.attemptId, taskAttempt.jvmID); taskAttempt.attemptId, taskAttempt.jvmID);
taskAttempt.reportedStatus.progress = 1.0f;
taskAttempt.updateProgressSplits();
//send the cleanup event to containerLauncher //send the cleanup event to containerLauncher
taskAttempt.eventHandler.handle(new ContainerLauncherEvent( taskAttempt.eventHandler.handle(new ContainerLauncherEvent(
taskAttempt.attemptId, taskAttempt.attemptId,

View File

@ -1736,6 +1736,7 @@ class MapTask extends Task {
indexCacheList.get(0).writeToFile( indexCacheList.get(0).writeToFile(
mapOutputFile.getOutputIndexFileForWriteInVolume(filename[0]), job); mapOutputFile.getOutputIndexFileForWriteInVolume(filename[0]), job);
} }
sortPhase.complete();
return; return;
} }
@ -1776,6 +1777,7 @@ class MapTask extends Task {
} finally { } finally {
finalOut.close(); finalOut.close();
} }
sortPhase.complete();
return; return;
} }
{ {

View File

@ -57,6 +57,7 @@ import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.TaskAttemptID; import org.apache.hadoop.mapreduce.TaskAttemptID;
import org.apache.hadoop.mapreduce.TaskCompletionEvent; import org.apache.hadoop.mapreduce.TaskCompletionEvent;
import org.apache.hadoop.mapreduce.TaskID; import org.apache.hadoop.mapreduce.TaskID;
import org.apache.hadoop.mapreduce.TaskReport;
import org.apache.hadoop.mapreduce.TaskType; import org.apache.hadoop.mapreduce.TaskType;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter; import org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter;
@ -151,7 +152,7 @@ public class TestMRJobs {
Assert.assertTrue(succeeded); Assert.assertTrue(succeeded);
Assert.assertEquals(JobStatus.State.SUCCEEDED, job.getJobState()); Assert.assertEquals(JobStatus.State.SUCCEEDED, job.getJobState());
verifySleepJobCounters(job); verifySleepJobCounters(job);
verifyTaskProgress(job);
// TODO later: add explicit "isUber()" checks of some sort (extend // TODO later: add explicit "isUber()" checks of some sort (extend
// JobStatus?)--compare against MRJobConfig.JOB_UBERTASK_ENABLE value // JobStatus?)--compare against MRJobConfig.JOB_UBERTASK_ENABLE value
@ -174,6 +175,18 @@ public class TestMRJobs {
&& counters.findCounter(JobCounter.SLOTS_MILLIS_MAPS).getValue() != 0); && counters.findCounter(JobCounter.SLOTS_MILLIS_MAPS).getValue() != 0);
} }
protected void verifyTaskProgress(Job job) throws InterruptedException,
IOException {
for (TaskReport taskReport : job.getTaskReports(TaskType.MAP)) {
Assert.assertTrue(0.9999f < taskReport.getProgress()
&& 1.0001f > taskReport.getProgress());
}
for (TaskReport taskReport : job.getTaskReports(TaskType.REDUCE)) {
Assert.assertTrue(0.9999f < taskReport.getProgress()
&& 1.0001f > taskReport.getProgress());
}
}
@Test @Test
public void testRandomWriter() throws IOException, InterruptedException, public void testRandomWriter() throws IOException, InterruptedException,
ClassNotFoundException { ClassNotFoundException {
@ -198,6 +211,7 @@ public class TestMRJobs {
boolean succeeded = job.waitForCompletion(true); boolean succeeded = job.waitForCompletion(true);
Assert.assertTrue(succeeded); Assert.assertTrue(succeeded);
Assert.assertEquals(JobStatus.State.SUCCEEDED, job.getJobState()); Assert.assertEquals(JobStatus.State.SUCCEEDED, job.getJobState());
// Make sure there are three files in the output-dir // Make sure there are three files in the output-dir
RemoteIterator<FileStatus> iterator = RemoteIterator<FileStatus> iterator =