[
https://issues.apache.org/jira/browse/MAPREDUCE-5844?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14036015#comment-14036015
]
Karthik Kambatla commented on MAPREDUCE-5844:
---------------------------------------------
Thanks [~maysamyabandeh] for the quick iterations and patience with reviews.
Hopefully, last set of comments.
bq. I took the liberty to apply the same pattern on also the already existing
public methods (not previously touched by the patch) whose visibilities were
relaxed for testing purposes.
While this should be the right thing to do, it might be a little too late.
Unfortunately, this is backwards incompatible.
bq. Sorry I did the moving but I forgot to update the visibilities.
Just realized the package name is changed. We should also move the file to a
matching folder:
hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-app/src/test/java/org/apache/hadoop/mapreduce/v2/app/rm/TestRMContainerAllocator.java
Took a closer look at how the variables mapResourceRequest and
reduceResourceRequest are accessed and the synchronizations. What do you think
of making those two {{AtomicInteger}}s and reverting any synchronization
changes made in the patch to address findbugs. If any findbugs warnings still
persist, we can add an exclusion in
./hadoop-mapreduce-project/dev-support/findbugs-exclude.xml. Also, you could
locally run mvn findbugs:findbugs for quicker turnaround.
> 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, MAPREDUCE-5844.patch,
> MAPREDUCE-5844.patch, MAPREDUCE-5844.patch, MAPREDUCE-5844.patch,
> MAPREDUCE-5844.patch, 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)