[ 
https://issues.apache.org/jira/browse/HADOOP-4474?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12641709#action_12641709
 ] 

Vivek Ratan commented on HADOOP-4474:
-------------------------------------

bq. But note that the iteration is done only when a TT asks for a task and not 
per a heartbeat.

Fair enough. But using a linked list like structure to track these special 
tasks seems simple enough. It also gives you a big benefit that you can 
maintain, and hence schedule, setup/cleanup tasks in a particular order. You'd 
ideally like to run setup tasks of jobs in the order in which they were 
submitted. An iteration over a hashmap is random. Using a separate sorted 
structure for setup/cleanup tasks can give you the ordering you want, which I 
think is quite valuable. There shouldn't be too many of these tasks (one each 
per job), so your memory footprint is relatively low. 

> JT should not iterate through all jobs in every heartbeat to find a cleanup 
> or setup task
> -----------------------------------------------------------------------------------------
>
>                 Key: HADOOP-4474
>                 URL: https://issues.apache.org/jira/browse/HADOOP-4474
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: mapred
>            Reporter: Vivek Ratan
>
> On every heartbeat, the JT first looks to see if it can run a setup or 
> cleanup task, before calling a Scheduler to get a Map or Reduce task. The JT 
> maintains a hashmap of JobInProgress objects (which can be waiting, running, 
> or completed). It iterates through this hashmap on each heartbeat to find a 
> setup or cleanup task. This linear search can be be very expensive, 
> especially with large clusters where the number of jobs is high. There are 
> lots of obvious ways to cut down on this linear search. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to