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

Wangda Tan commented on YARN-4902:
----------------------------------

[~asuresh],

Thanks for explanations,

bq. Establishment of an application/affinity/server group should be part of a 
deployment schema API separate from the ResourceRequest.
Does k8s have separate resource request APIs? It seems k8s combines resource 
request and launch context to the same [spec 
scheme|http://kubernetes.io/docs/user-guide/pods/multi-container/#the-spec-schema].
My understanding of deployment scheme should be very close to 
ContainerLaunchContext. (after we decouple container and allocation, it could 
become AllocationDeploymentContext).
IAW, we already have deployment API in YARN. And placement-related fields 
should be a part of resource request API.

bq. My fear is that coupling allocation-tags and target-allocation-tags with 
the resource request would lead to a far more complex implementation than 
necessary. For ex, One must now enforce an order in which ResourceRequests are 
made to ensure that applications/components/containers specified in 
target-allocation-tags exist / infact already been deployed.
I'm not sure if I understand your proposal correctly, I cannot find it 
simplifies the problem:
For example, in your solution. If applications want anti-affinity between 
applications (application_1 and application_2 don't want their allocations on 
the same host). Applications needs to get the "group-id" first, to get the 
"group-id", it will send a request to get a new "anti-affinity-group-id", and 
the anti-affinity-group-id" will be passed to application-1 and application-2, 
and app1/app2 submitted the group-id to scheduler while requesting resources.
If we don't have the group-id, which is solution described in design doc, app_1 
/ app_2 can set a pre-generated id as a part of allocation_tag, and make 
requests indicate (*not generated-allocation-tag*).
It seems to me that complexity of two solutions are similar, and the group-id 
solution needs a separate scheduler API.

bq. Also having groups creates prior to the resource request is issued allows 
for easier/faster determination of whether a request is satisfiable in the 
first place.
In my mind affinity / anti-affinity should be late-binding. For example, if an 
app wants to get resources close to "hbase_region_server", if there's no 
running / pending hbase_region_server allocation. The app should wait till such 
allocations available.

> [Umbrella] Generalized and unified scheduling-strategies in YARN
> ----------------------------------------------------------------
>
>                 Key: YARN-4902
>                 URL: https://issues.apache.org/jira/browse/YARN-4902
>             Project: Hadoop YARN
>          Issue Type: New Feature
>            Reporter: Vinod Kumar Vavilapalli
>            Assignee: Wangda Tan
>         Attachments: Generalized and unified scheduling-strategies in YARN 
> -v0.pdf
>
>
> Apache Hadoop YARN's ResourceRequest mechanism is the core part of the YARN's 
> scheduling API for applications to use. The ResourceRequest mechanism is a 
> powerful API for applications (specifically ApplicationMasters) to indicate 
> to YARN what size of containers are needed, and where in the cluster etc.
> However a host of new feature requirements are making the API increasingly 
> more and more complex and difficult to understand by users and making it very 
> complicated to implement within the code-base.
> This JIRA aims to generalize and unify all such scheduling-strategies in YARN.



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

Reply via email to