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

Wangda Tan commented on YARN-1042:
----------------------------------

Thanks [~kkaranasos] for these suggestions.

I agree to merge the implementation in scheduler to support affinity and 
anti-affinity, we should not have duplicated code to support both of 
(anti-)affinity.

However, personally I'm not in favor of min-cardinality / max-cardinality, two 
reasons:
1) Comparing to affinity-to / anti-affinity-to, it is not straightforward 
enough to a normal YARN user. (of course, it is easy for a PhD :p)
2) We have to tradeoff between syntax flexibility and feature availability. 
Users will be happy if YARN allow them to specify as many constraints as they 
want, but they will be soon frustrated if we cannot give them in time. For 
example, user can specify allocate min=10/max=10 MPI tasks each host, but in 
reality, it could be quite hard in a busy cluster. And it gonna be hard for 
YARN to optimize such constraints, for example, how to preempt containers to 
satisfy min=max=10 cardinality.

I have a simpler suggestion to handle most possible use cases as the first 
step. Which is:
- Extend existing ResourceRequest, by adding a new 
{{placementConstraintExpression}}
- Simple anti-affinity (min=max=1)
- Simple affinity (min=2,max=infinity)
- Within app and between app
- Once tags are allowed to specified in ResourceRequest, we can support 
(anti-)affinity for tags

The API could looks like:
- {{affinity-to app=app_1234_0002}}
- {{anti-affinity-to app=app_1234_0002}}
- {{anti-affinity-to tag="Hbase-master"}}
- {{anti-affinity-to app=app_1234_0002,tag="HBase-master"}}

And more rich syntax (like affinity to rack / cluster, etc.) we can think more 
when doing YARN-4902.

> add ability to specify affinity/anti-affinity in container requests
> -------------------------------------------------------------------
>
>                 Key: YARN-1042
>                 URL: https://issues.apache.org/jira/browse/YARN-1042
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: resourcemanager
>    Affects Versions: 3.0.0-alpha1
>            Reporter: Steve Loughran
>            Assignee: Wangda Tan
>         Attachments: YARN-1042-demo.patch, YARN-1042-design-doc.pdf, 
> YARN-1042-global-scheduling.poc.1.patch, YARN-1042.001.patch, 
> YARN-1042.002.patch
>
>
> container requests to the AM should be able to request anti-affinity to 
> ensure that things like Region Servers don't come up on the same failure 
> zones. 
> Similarly, you may be able to want to specify affinity to same host or rack 
> without specifying which specific host/rack. Example: bringing up a small 
> giraph cluster in a large YARN cluster would benefit from having the 
> processes in the same rack purely for bandwidth reasons.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: yarn-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: yarn-issues-h...@hadoop.apache.org

Reply via email to