[
https://issues.apache.org/jira/browse/HADOOP-3674?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12609809#action_12609809
]
Leitao Guo commented on HADOOP-3674:
------------------------------------
check this senario:
H1 has the data of Task1
H2 has the data of Task2
H3 has the data of Task3
H4 has the data of Task4
H5 has no data
And now, tasktrackers ask for new tasks in this order: H5, H4, H3, H2, H1.
If there is no special task scheduling policy for those tasktrackers who have
no data, there would be like this:
Task4 is scheduled to H5,
Task3 is scheduled to H4,
Task2 is scheduled to H3,
Task1 is scheduled to H2,
no task is scheduled to H1.
This has caused the IO stress for data movement, although no compute cycies are
wasted.
So, if there is a kind of reservation policy for task scheduling, and let those
tasktrackers have no data wait for a litter more time, the situation would be
like this:
Task4 is scheduled to H4,
Task3 is scheduled to H3,
Task2 is scheduled to H2,
Task1 is scheduled to H1,
no task is scheduled to H5.
This may be more efficient.
> dynamic heartbeat interval for the locality-aware task scheduling
> -----------------------------------------------------------------
>
> Key: HADOOP-3674
> URL: https://issues.apache.org/jira/browse/HADOOP-3674
> Project: Hadoop Core
> Issue Type: Wish
> Components: mapred
> Reporter: Leitao Guo
> Priority: Minor
>
> In current hadoop release (0.17.0), there is no special scheduling policy for
> those tasktrackers who have no data for some jobs. So, there would be
> inefficient in some senarios. For example, tasktracker A has the data for a
> job, but tasktracker B, which has no data for this job, sends the heartbeat
> message to the jobtracker for a new task before tasktrack A. The task may be
> scheduled to B instead of A. While Jobtracker has to find a new task for
> tasktracker A when A ask for a new task.
> In this situation, if jobtracker has some reservation policy, such as reserve
> the task for tasktracker A and let B ask for new task in the next heartbeat
> message, that would be more efficient. Because before tasktracker B asking
> for new task the second time, tasktracker A has applied for a new task and
> jobtracker has scheduled the task to A.
> Here is a rough idea to deal with the senario above:
> (1) Jobtracker receives the heartbeat message sent by tasktracker B, which
> has no data for any job.
> (2) Jobtracker send response message to tasktracker B with a new heartbeat
> message interval, but does not schedule new task to B. The new heartbeat
> interval should be shorter the current heartbeat interval, for example,
> current_heartbeat_interval/2.
> (3) Tasktracker B receive the response from jobtracker, and sends another
> heartbeat message for a new task after a period of
> current_heartbeat_interval/2 .
> (4) Jobtracker then find a new task for tasktracker B.
> This is just an primary idea for the improvement of the locality-aware
> scheduling. Any comments are welcome.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.