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