[ https://issues.apache.org/jira/browse/YARN-8638?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16590483#comment-16590483 ]
Eric Badger commented on YARN-8638: ----------------------------------- bq. LinuxContainerRuntime is already marked @Private and @Unstable, so I think we're covered there. I also agree that requiring implementations to exist within "magic" packages is probably counter-productive (more code complexity and no real net gain). I agree with this. The pluggable runtime is a feature here, but I don't think it's anything that we need to vow not to break. We can continue to develop the interface as we need, and any pluggable runtimes will just need to update when they come across those changes. To me, this is the best of both worlds where development is not changed on trunk, but there is also a way to plugin an arbitrary runtime that you control (and can modify in the cases where the interface changes). bq. Perhaps we can have the implementation return true if YARN_CONTAINER_RUNTIME_TYPE is either unset or explicitly "default"? Yea this sounds good to me. I want to make sure that we're consistent what what happens when a user asks for a specific runtime and it isn't allowed. The current docker behavior is that we will fail the job instead of falling back to default. I think this is the correct way to go and is what we should follow for the pluggable runtimes as well. Using {{YARN_CONTAINER_RUNTIME_TYPE}} makes sense to me and I agree with your proposed approach. > Allow linux container runtimes to be pluggable > ---------------------------------------------- > > Key: YARN-8638 > URL: https://issues.apache.org/jira/browse/YARN-8638 > Project: Hadoop YARN > Issue Type: Improvement > Components: nodemanager > Affects Versions: 3.2.0 > Reporter: Craig Condit > Assignee: Craig Condit > Priority: Minor > Attachments: YARN-8638.001.patch, YARN-8638.002.patch > > > YARN currently supports three different Linux container runtimes (default, > docker, and javasandbox). However, it would be relatively straightforward to > support arbitrary runtime implementations. This would enable easier > experimentation with new and emerging runtime technologies (runc, containerd, > etc.) without requiring a rebuild and redeployment of Hadoop. > This could be accomplished via a simple configuration change: > {code:xml} > <property> > <name>yarn.nodemanager.runtime.linux.allowed-runtimes</name> > <value>default,docker,experimental</value> > </property> > > <property> > <name>yarn.nodemanager.runtime.linux.experimental.class</name> > <value>com.somecompany.yarn.runtime.ExperimentalLinuxContainerRuntime</value> > </property>{code} > > In this example, {{yarn.nodemanager.runtime.linux.allowed-runtimes}} would > now allow arbitrary values. Additionally, > {{yarn.nodemanager.runtime.linux.\{RUNTIME_KEY}.class}} would indicate the > {{LinuxContainerRuntime}} implementation to instantiate. A no-argument > constructor should be sufficient, as {{LinuxContainerRuntime}} already > provides an {{initialize()}} method. > {{DockerLinuxContainerRuntime.isDockerContainerRequested(Map<String, String> > env)}} and {{JavaSandboxLinuxContainerRuntime.isSandboxContainerRequested()}} > could be generalized to {{isRuntimeRequested(Map<String, String> env)}} and > added to the {{LinuxContainerRuntime}} interface. This would allow > {{DelegatingLinuxContainerRuntime}} to select an appropriate runtime based on > whether that runtime claimed ownership of the current container execution. > For backwards compatibility, the existing values (default,docker,javasandbox) > would continue to be supported as-is. Under the current logic, the evaluation > order is javasandbox, docker, default (with default being chosen if no other > candidates are available). Under the new evaluation logic, pluggable runtimes > would be evaluated after docker and before default, in the order in which > they are defined in the allowed-runtimes list. This will change no behavior > on current clusters (as there would be no pluggable runtimes defined), and > preserves behavior with respect to ordering of existing runtimes. -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: yarn-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: yarn-issues-h...@hadoop.apache.org