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

Hitesh Sharma commented on YARN-5501:
-------------------------------------

Hi [~asuresh], thanks for the feedback and sorry for the delay in responding.

bq. From the doc, it looks like "detach" implies removing the pre-initialized 
container from the pool and "attach" referrs to associating an app with a 
pooled container. It might be simpler if we treat the operation as atomic. In 
that sense, we can make do with just having an "attach" or "lease", where a 
pre-initialized container is associated with an app.

Not sure what atomic means here but we need to detach so that the YARN 
machinery can be updated to reflect the fact that the pre-initialized container 
was utilized. As part of this detaching we also can associate the resources 
(files downloaded) by the pre-initialized container to the actual application 
container that is going to use the pre-initialized container. This ensures that 
when the application container exits then all resources for pre-initialized 
container also get cleaned up.

bq. For the sake of simplicity. Maybe we should assume that once an application 
is assigned a container from the pool and it has "attached" to it, it is the 
application's container and the Pooling framework relinquishes ownership of. 
The container then completes normally and all resource accounting is billed 
against the app. The pool of containers can be re-populated externally by the 
pool manager component in the RM (beyond the scope of this currently)

Yes, agreed. We have the same thinking over here.

bq.  This is one of the reasons why I feel generalized resources would be 
useful here. Assume initialy we have a cluster with resources <10 vcores, 10 
GB> spread across 2 NMs equally. Lets say we allocate 4 pre-initialized 
containers (via the pooling component in the RM) of type foo each with <1 
vcore, 1 GB>. Lets say's we distribute it equally across the NMs. Once the 
pre-initialized containers have started, the total cluster resources would be 
<6 vcores, 6 GB, 4 foo>.
Each NM would have <3 vcores, 3 GB, 2 foo> available resources. Now if an app 
asks for <0 vcores, 0 GB, 1 foo>, it will be allocated 1 pooled container and 
the resources associated with 1 foo <1 vcore, 1 GB> can be accounted against 
the app. The app can also maybe ask for <1 vcore, 1 GB, 1 foo>, in which case, 
the app will still be assigned one of the pooled containers with the assumption 
that, the container's size can expand by <1 vcore, 1 GB> if required. 
Cgroups/JobObjects to be used to enforce this.

Agreed. 

bq. AM Container communication.

In our PoC we introduced a new API in the container executor (attachContainer) 
which is called when a pre-initialized container is used up by an actual AM. 
Either the ContainerExecutor or the ContainerRuntime could be used for this 
purpose. But for now the application would need to have a way for establishing 
communication with the pre-init container.

Thanks for the feedback guys. Appreciate the time and help.




> Container Pooling in YARN
> -------------------------
>
>                 Key: YARN-5501
>                 URL: https://issues.apache.org/jira/browse/YARN-5501
>             Project: Hadoop YARN
>          Issue Type: Improvement
>            Reporter: Arun Suresh
>            Assignee: Hitesh Sharma
>         Attachments: Container Pooling in YARN.pdf, Container Pooling - one 
> pager.pdf
>
>
> This JIRA proposes a method for reducing the container launch latency in 
> YARN. It introduces a notion of pooling *Unattached Pre-Initialized 
> Containers*.
> Proposal in brief:
> * Have a *Pre-Initialized Container Factory* service within the NM to create 
> these unattached containers.
> * The NM would then advertise these containers as special resource types 
> (this should be possible via YARN-3926).
> * When a start container request is received by the node manager for 
> launching a container requesting this specific type of resource, it will take 
> one of these unattached pre-initialized containers from the pool, and use it 
> to service the container request.
> * Once the request is complete, the pre-initialized container would be 
> released and ready to serve another request.
> This capability would help reduce container launch latencies and thereby 
> allow for development of more interactive applications on YARN.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
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