[
https://issues.apache.org/jira/browse/SLIDER-828?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Steve Loughran resolved SLIDER-828.
-----------------------------------
Resolution: Fixed
Assignee: Steve Loughran
> Redundant container request from slider causing high load on busy cluster
> -------------------------------------------------------------------------
>
> Key: SLIDER-828
> URL: https://issues.apache.org/jira/browse/SLIDER-828
> Project: Slider
> Issue Type: Bug
> Components: appmaster
> Affects Versions: Slider 0.61, Slider 0.70
> Reporter: Shrijeet Paliwal
> Assignee: Steve Loughran
> Priority: Blocker
> Fix For: Slider 0.80
>
>
> Context:
> We were seeing very aggressive preemption done by Fair Scheduler and 98% of
> preemption activity is triggered due to slider queue's needs. Slider queue is
> stable queue i.e its containers don't churn and it has been provided a fair
> share guarantee of more than it needs (high weight & min share double of its
> steady state needs). So it was puzzling to see it triggering preemption. When
> I turned on debug logging of fair scheduler I noticed scheduler demand update
> thread reporting unusually high demand from Slider queue.
> Initial thought was a bug in scheduler but later I concluded its Slider's
> problem but not due to its own code but due to AMRMClient code. I can
> deterministically reproduce the issue on my laptop running a pseudo
> yarn+slider setup. I traced it to an open issue
> https://issues.apache.org/jira/browse/YARN-3020.
> The problem:
> 1. A region server fails for the first time, slider notices it and registers
> a request to RM via AMRMClient for a new container. At this time AMRMClient
> caches this allocation request with the 'Resource' (a data structure with
> memory, cpu & priority) as key. (source: AMRMClientImpl.java, cache is
> remoteRequestsTable)
> 2. A region server fails again, slider notices it and registers a request to
> RM again via AMRMClient for a (one) new container. AMRMClient finds that
> similar Resource request (the memory, cpu and priority for RS doesn't change
> obviously) in its cache, add +1 to the container count before putting it over
> wire.NOTE: Slider didn't need 2 containers, but ends up receiving 2. When
> containers are allocated, slider keeps one and discards one.
> 3. As explained in YARN-3020, with subsequent failures we will keep asking
> for more and more containers when in reality we always need one.
> For fair scheduler this means demand keeps going up. It doesn't know that
> slider ends up discarding the surplus containers. In order to satisfy the
> demand it kills mercilessly. Needless to say this will not be just triggered
> by container failure, even flexing should trigger this.
> The fix:
> Rumor is that AMRMClient doesn't have a bug, its intended behaviour (source:
> comments in YARN-3020). The claim is that on receiving container client
> should clear the cache by calling a method called 'removeContainerRequest'.
> Slider isn't following the protocol correctly, in Slider's defense the
> protocol is not well defined.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)