[
https://issues.apache.org/jira/browse/HADOOP-3245?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Amar Kamat updated HADOOP-3245:
-------------------------------
Attachment: HADOOP-3245-v2.5.patch
Attaching a review-patch implementing the above discussed design. Testing and
optimizations are in progress. There is one known issue with the design and
hence the patch is *incomplete*.
Consider the following case [Notations : [EMAIL PROTECTED] means JT
(re)started at time t1, [EMAIL PROTECTED] means Task Ti completed on Tracker
TTj]
1) TT1 asks for a task and the [EMAIL PROTECTED] schedules map M1 on TT1
2) M1 finishes on TT1 and JT is updated
3) TT2 asks for a task and the [EMAIL PROTECTED] schedules reduce R1 on TT2
4) R1 asks for map-completion-event and gets [EMAIL PROTECTED]
5) R1 adds [EMAIL PROTECTED] to the fetch list
6) [EMAIL PROTECTED] restarts and comes up as [EMAIL PROTECTED]
7) TT3 asks for a task and the [EMAIL PROTECTED] schedules reduce M1 on TT3
8) M1 finishes on TT3 and [EMAIL PROTECTED] is added as map-completion-event
9) TT2 SYNCs up with [EMAIL PROTECTED] and gets the map completion event
10) R1 get [EMAIL PROTECTED] and ignores it since it already had [EMAIL
PROTECTED]
11) TT1 goes down.
The design prefers the old map output location and silently ignores the new
task completion event. In such a case R1 has missed the new event and will keep
re-trying at the old location. Even though R1 will report fetch failures, it
will be a _no-op_ since [EMAIL PROTECTED] doesnt know about [EMAIL PROTECTED]
[EMAIL PROTECTED] thinks that M1 is complete while [EMAIL PROTECTED] will wait
for map-completion-event of M1 and hence the job will be stuck. Note that this
also true if TT1 joins back after [EMAIL PROTECTED] completes where [EMAIL
PROTECTED] will delete the output of [EMAIL PROTECTED] Following is the change
that might help to overcome this problem.
Let the reducers fetch data for the same map from multiple sources (i.e R1 will
keep fetching data from [EMAIL PROTECTED] and also from [EMAIL PROTECTED]). The
one that finishes first will invalidate the other. One optimization that can be
done is that the reducer can continue fetching from the old output (since the
timestamp is always there) and switch to the new event once there is a failure
from the old event (i.e keep [EMAIL PROTECTED] as a backup and keep fetching
from [EMAIL PROTECTED] until that fails after which switch to [EMAIL
PROTECTED]).
----
Thoughts?
> Provide ability to persist running jobs (extend HADOOP-1876)
> ------------------------------------------------------------
>
> Key: HADOOP-3245
> URL: https://issues.apache.org/jira/browse/HADOOP-3245
> Project: Hadoop Core
> Issue Type: New Feature
> Components: mapred
> Reporter: Devaraj Das
> Assignee: Amar Kamat
> Attachments: HADOOP-3245-v2.5.patch
>
>
> This could probably extend the work done in HADOOP-1876. This feature can be
> applied for things like jobs being able to survive jobtracker restarts.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.