[ 
https://issues.apache.org/jira/browse/YARN-1921?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrey Stepachev updated YARN-1921:
-----------------------------------

    Attachment: YARN-1921.patch

> Allow to override queue prefix, where new queues created
> --------------------------------------------------------
>
>                 Key: YARN-1921
>                 URL: https://issues.apache.org/jira/browse/YARN-1921
>             Project: Hadoop YARN
>          Issue Type: Improvement
>          Components: scheduler
>    Affects Versions: 2.3.0
>         Environment: Yarn 2.3.0
>            Reporter: Andrey Stepachev
>         Attachments: YARN-1921.patch
>
>
> Fair scheduler has a couple of QueuePlacementRules. Those rules can create 
> queues, if they not exists with hardcoded prefix "root.". 
> Consider an example: we have a placement rule, which creates user's queue if 
> it not exists. Current implementation creates it at "root." prefix  Suppose 
> that this user runs a big job. In that case it will get a fair share of 
> resources because queue will be created at 'root.' with default settings, and 
> that affects all other users of the cluster. 
> Of course, FairScheduler can place such users to default queue, but in that 
> case if user submits a big queue it will eats resources of whole queue, and 
> we know that no preemption can be done within one queue (Or i'm wrong?). So 
> effectively one user can usurp all default queue resources.
> To solve that I created a patch, which allows to override "root." prefix in 
> QueuePlacementRules. Thats gives us flexibility to automatically create 
> queues for users or group of users under predefined queue. So, every user 
> will get a separate queue and will share parent queue resources and can't 
> usurp all resources, because parent node can be configured to preempt tasks.
> Consider example (parent queue specified for each rule):
> {code:title=policy.xml|borderStyle=solid}
> <queuePlacementPolicy>
>   <rule name='specified' parent='granted'/>
>   <rule name='user'  parent='guests'/>
> </queuePlacementPolicy>
> {code}
> With such definition queue requirements will give us:
> {code:title=Example.java|borderStyle=solid}
> "root.granted.specifiedq" == policy.assignAppToQueue("specifiedq", 
> "someuser");
> "root.guests.someuser" == policy.assignAppToQueue("default", "someuser");
> "root.guests.otheruser" == policy.assignAppToQueue("default", "otheruser"); 
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to