MAPREDUCE-2705. Permits parallel multiple task launches. Contributed by Thomas Graves.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1153717 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Devaraj Das 2011-08-04 01:15:33 +00:00
parent 2025d4e032
commit 44b7e03114
2 changed files with 31 additions and 23 deletions

View File

@ -209,6 +209,9 @@ Trunk (unreleased changes)
MAPREDUCE-2602. Allow setting of end-of-record delimiter for MAPREDUCE-2602. Allow setting of end-of-record delimiter for
TextInputFormat for the old API. (Ahmed Radwan via todd) TextInputFormat for the old API. (Ahmed Radwan via todd)
MAPREDUCE-2705. Permits parallel multiple task launches.
(Thomas Graves via ddas)
OPTIMIZATIONS OPTIMIZATIONS
MAPREDUCE-2026. Make JobTracker.getJobCounters() and MAPREDUCE-2026. Make JobTracker.getJobCounters() and

View File

@ -1253,7 +1253,7 @@ public class TaskTracker
} }
} }
private void launchTaskForJob(TaskInProgress tip, JobConf jobConf, protected void launchTaskForJob(TaskInProgress tip, JobConf jobConf,
UserGroupInformation ugi) throws IOException { UserGroupInformation ugi) throws IOException {
synchronized (tip) { synchronized (tip) {
tip.setJobConf(jobConf); tip.setJobConf(jobConf);
@ -2351,11 +2351,14 @@ public class TaskTracker
* All exceptions are handled locally, so that we don't mess up the * All exceptions are handled locally, so that we don't mess up the
* task tracker. * task tracker.
*/ */
void startNewTask(TaskInProgress tip) { void startNewTask(final TaskInProgress tip) {
Thread launchThread = new Thread(new Runnable() {
@Override
public void run() {
try { try {
RunningJob rjob = localizeJob(tip); RunningJob rjob = localizeJob(tip);
// Localization is done. Neither rjob.jobConf nor rjob.ugi can be null // Localization is done. Neither rjob.jobConf nor rjob.ugi can be null
launchTaskForJob(tip, new JobConf(rjob.jobConf), rjob.ugi); launchTaskForJob(tip, new JobConf(rjob.getJobConf()), rjob.ugi);
} catch (Throwable e) { } catch (Throwable e) {
String msg = ("Error initializing " + tip.getTask().getTaskID() + String msg = ("Error initializing " + tip.getTask().getTaskID() +
":\n" + StringUtils.stringifyException(e)); ":\n" + StringUtils.stringifyException(e));
@ -2368,14 +2371,16 @@ public class TaskTracker
LOG.info("Error cleaning up " + tip.getTask().getTaskID() + ":\n" + LOG.info("Error cleaning up " + tip.getTask().getTaskID() + ":\n" +
StringUtils.stringifyException(ie2)); StringUtils.stringifyException(ie2));
} }
// Careful!
// This might not be an 'Exception' - don't handle 'Error' here!
if (e instanceof Error) { if (e instanceof Error) {
throw ((Error) e); LOG.error("TaskLauncher error " +
StringUtils.stringifyException(e));
} }
} }
} }
});
launchThread.start();
}
void addToMemoryManager(TaskAttemptID attemptId, boolean isMap, void addToMemoryManager(TaskAttemptID attemptId, boolean isMap,
JobConf conf) { JobConf conf) {