You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yarn-dev@hadoop.apache.org by Maysam Yabandeh <m....@gmail.com> on 2013/08/17 10:07:07 UTC
relaxLocality in ContainerRequest
Hi,
According to the java docs, this is what relaxLocality supposed to mean:
/*
* @param relaxLocality
* If true, containers for this request may be assigned on hosts
* and racks other than the ones explicitly requested.
*/
However, the way it is used in AMRMClientImpl.java implies differently:
{code:java}
for (String node : dedupedNodes) {
addResourceRequest(req.getPriority(), node, req.getCapability(),
req,
true);
}
{code}
where, relaxLocality for nodes is always set to true, ignoring the original
relaxLocality set by the user. Since this is introduced from the very
beginning at YARN-521, I do not whether it is a bug or the title
relaxLocality is confusing.
Thanks
Maysam
Re: relaxLocality in ContainerRequest
Posted by sa...@cloudera.com.
Hi Maysam,
The code and doc are both correct. A node-level ContainerRequest ends up decomposing into 3 ResourceRequests, one for the node, one for the rack, and one for anywhere. The way scheduling works is that when a node is offered to an application, it checks to see whether the application has outstanding requests in the order node, rack, *. If it hits a ResourceRequest with relaxLocality turned off, it won't use it. Check out the docs on ResourceRequest#setRelaxLocality or the discussion on YARN-392 for more details on how this works.
-sandy
(iphnoe tpying)
On Aug 17, 2013, at 1:07 AM, Maysam Yabandeh <m....@gmail.com> wrote:
> Hi,
>
> According to the java docs, this is what relaxLocality supposed to mean:
> /*
> * @param relaxLocality
> * If true, containers for this request may be assigned on hosts
> * and racks other than the ones explicitly requested.
> */
>
> However, the way it is used in AMRMClientImpl.java implies differently:
> {code:java}
> for (String node : dedupedNodes) {
> addResourceRequest(req.getPriority(), node, req.getCapability(), req,
> true);
> }
> {code}
> where, relaxLocality for nodes is always set to true, ignoring the original relaxLocality set by the user. Since this is introduced from the very beginning at YARN-521, I do not whether it is a bug or the title relaxLocality is confusing.
>
> Thanks
> Maysam