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

Konstantinos Karanasos commented on YARN-1042:
----------------------------------------------

Hi [~leftnoteasy]. Thanks for working on this. Being able to specify 
(anti-)affinity constraints is a feature that we are very interested in as well.
I gave a quick look at your patch. As I mentioned to you in the past, we also 
have a working prototype for defining and imposing similar constraints (I had 
uploaded an initial version of it at YARN-4902 some time back). We can share 
more code if it helps.

For now let's focus on the API -- we can later discuss how to make the 
scheduling efficient (e.g., using the global scheduling and so on).

I would suggest to unify the affinity and anti-affinity constraints and make 
them a bit more general too. For instance, we can specify "cardinality" 
constraints of the form "put no more than 4 HBase masters at each rack". This 
constraint is useful but cannot be captured by pure affinity or anti-affinity 
constraints.
I assume that its task can be associated with a set of labels (similar to the 
ones we are discussing in YARN-3409). This is not there at the moment, but can 
be added.
Then, we could use the following placement constraint form: {noformat} {task, 
target-tasks, cluster-scope, min-cardinality, max-cardinality}. {noformat}
In the above constraint, {{task}} is a specific task, {{target-tasks}} is a 
label (e.g., "HBase-master", "app_000123" or "latency-critical") that specifies 
a set of tasks that are already scheduled in the cluster, {{cluster-scope}} is 
something among NODE and RACK (and possibly others in the future), 
{{min-cardinality}} is the minimum number of tasks with label {{target-tasks}} 
that can appear at the same {{cluster-scope}} with {{task}}, and 
{{max-cardinality}} is the respective maximum cardinality.
Using the {{min-}} and {{max-cardinality}}, we can specify affinity, 
anti-affinity and other cardinality constraints.

For example, {task_001, "HBase-master", NODE, 1, 1} is an anti-affinity 
constraint (don't put more than one HBase master at a node. 
Likewise, {task_001, "HBase-region-server", NODE, 2, MAX_INT} is an affinity 
constraint for region servers.

Let me know how it looks.

> 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