hadoop-mapreduce-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Maysam Yabandeh (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (MAPREDUCE-5844) Reducer Preemption is too aggressive
Date Wed, 28 May 2014 16:08:02 GMT

    [ https://issues.apache.org/jira/browse/MAPREDUCE-5844?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14011249#comment-14011249
] 

Maysam Yabandeh commented on MAPREDUCE-5844:
--------------------------------------------

Thanks [~wangda]. I guess there is no unanimity about the default value of the threshold,
as some also suggested to have its default equal to zero. We are planning to have it enabled
in our config settings anyway, but I let the community decide on the default value in the
source code.

I think using the timestamp of the last allocated mapper is interesting since we would keep
only one timestamp versus one per mapper request. The challenge however would be that it does
not clarify how recent is each map request. We can of course have another single timestamp
for earliest received map request but maintaining it after one of the many inflight map requests
get allocated would add a bit of more complexity to the patch and its logic. I figured having
the logic in the patch as simple as possible would justify a new timestamp field per container
request.

> Reducer Preemption is too aggressive
> ------------------------------------
>
>                 Key: MAPREDUCE-5844
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-5844
>             Project: Hadoop Map/Reduce
>          Issue Type: Bug
>            Reporter: Maysam Yabandeh
>            Assignee: Maysam Yabandeh
>         Attachments: MAPREDUCE-5844.patch
>
>
> We observed cases where the reducer preemption makes the job finish much later, and the
preemption does not seem to be necessary since after preemption both the preempted reducer
and the mapper are assigned immediately--meaning that there was already enough space for the
mapper.
> The logic for triggering preemption is at RMContainerAllocator::preemptReducesIfNeeded
> The preemption is triggered if the following is true:
> {code}
> headroom +  am * |m| + pr * |r| < mapResourceRequest
> {code} 
> where am: number of assigned mappers, |m| is mapper size, pr is number of reducers being
preempted, and |r| is the reducer size.
> The original idea apparently was that if headroom is not big enough for the new mapper
requests, reducers should be preempted. This would work if the job is alone in the cluster.
Once we have queues, the headroom calculation becomes more complicated and it would require
a separate headroom calculation per queue/job.
> So, as a result headroom variable is kind of given up currently: *headroom is always
set to 0* What this implies to the speculation is that speculation becomes very aggressive,
not considering whether there is enough space for the mappers or not.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message