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

Alejandro Abdelnur commented on YARN-1404:
------------------------------------------

The idea for unmanaged containers is not to modify the lifecycle of a 
request/allocation/activation of container requests. This means that an 
unmanaged container follow the exact same path that regular containers with the 
sole exception that no process is started for it.

The {{ContainerLauncherContext}} would have a {{UNMANAGED_CONTAINER}} constant 
which is an 'empty' {{ContainerLauncherContext}} instance (no environment, no 
command, no local resources, etc).

If the {{UNMANAGED_CONTAINER}} constant is used as the 
{{ContainerLauncherContext}} in a {{StartContainerRequest}} when doing a 
{{ContainerManagementProtocol#startContainers(...)}} call, then the NodeManager 
would not start the container process. 

In the NodeManager, there is one {{ContainerLaunch}} instance per running 
container which blocks in its {{call()}} method while the container is running. 
And with the {{cleanUp()}} container method ends the container. For unmanaged 
containers these 2 methods would simple use a latch instead 
starting-blocking/stopping a process. By doing this, unmanaged containers will 
also block as regular containers.

In addition, we need the {{ContainersMonitorImpl}} must ignore unmanaged 
containers as there is not underlying process tree to monitor. This can be done 
adding an {{ContainersMonitorEvent.isUnmanagedContainer()}} method that will 
indicate that here is no underlying process to monitor. 



> Add support for unmanaged containers
> ------------------------------------
>
>                 Key: YARN-1404
>                 URL: https://issues.apache.org/jira/browse/YARN-1404
>             Project: Hadoop YARN
>          Issue Type: New Feature
>          Components: nodemanager
>    Affects Versions: 2.2.0
>            Reporter: Alejandro Abdelnur
>            Assignee: Alejandro Abdelnur
>         Attachments: YARN-1404.patch
>
>
> Currently a container allocation requires to start a container process with 
> the corresponding NodeManager's node.
> For applications that need to use the allocated resources out of band from 
> Yarn this means that a dummy container process must be started.
> Impala/Llama is an example of such application which is currently starting a 
> 'sleep 10y' (10 years) process as the container process. And the resource 
> capabilities are used out of by and the Impala process collocated in the 
> node. The Impala process ensures the processing associated to that resources 
> do not exceed the capabilities of the container. Also, if the container is 
> lost/preempted/killed, Impala stops using the corresponding resources.
> In addition, in the case of Llama, the current requirement of having a 
> container process, gets complicates when hard resource enforcement (memory 
> -ContainersMonitor- or cpu -via cgroups-) is enabled because Impala/Llama 
> request resources with CPU and memory independently of each other. Some 
> requests are CPU only and others are memory only. Unmanaged containers solve 
> this problem as there is no underlying process with zero CPU or zero memory.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to