Just launched tasks aren't getting cleaned up on job completion (success/killed)
--------------------------------------------------------------------------------
Key: HADOOP-1289
URL: https://issues.apache.org/jira/browse/HADOOP-1289
Project: Hadoop
Issue Type: Bug
Components: mapred
Reporter: Arun C Murthy
When a job is killed, if there are tasks which haven't been launched yet (just
scheduled on a tasktracker) it leads to a situation where the non-launched task
hangs around for a long time on the tasktrackers taking up valuable 'slots'
preventing the scheduling of _legitimate_ tasks on them.
This is due to a race-condition:
a) Job is killed:
JobInProgress.kill
-> JobInProgress.garbageCollect
-> JobInProgress.finalizeJob
-> JobTracker.removeJobTasks
-> JobTracker.removeTaskEntry - this removes the taskid -> TIP entry in
JobTracker.taskIdToTIPMap
b) ExpireLaunchingTasks thread detects the task has timedout, however since the
taskid -> TIP map is missing it cannot 'fail' the task - thus leaving it
orphaned on the tasktracker.
One possible solution is to broadcast a KillJobAction to all trackers in the
cluster (or only those trackers which ever ran a task of this Job) ensuring the
right cleanup... clearly this is a hairy situation.
Thoughts?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.