diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeManager.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeManager.java index 9eff3a9213e..db3aaca11fb 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeManager.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/NodeManager.java @@ -381,6 +381,7 @@ protected ContainerExecutor createContainerExecutor(Configuration conf) { @Override protected void serviceInit(Configuration conf) throws Exception { + UserGroupInformation.setConfiguration(conf); rmWorkPreservingRestartEnabled = conf.getBoolean(YarnConfiguration .RM_WORK_PRESERVING_RECOVERY_ENABLED, YarnConfiguration.DEFAULT_RM_WORK_PRESERVING_RECOVERY_ENABLED); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeManager.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeManager.java index b2c2f6ee9a9..eb011c5fbff 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeManager.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/TestNodeManager.java @@ -23,6 +23,7 @@ import java.io.IOException; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.CommonConfigurationKeysPublic; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.exceptions.YarnRuntimeException; import org.apache.hadoop.yarn.server.nodemanager.containermanager.container.ContainerEvent; @@ -170,4 +171,25 @@ public void testCreationOfNodeLabelsProviderService() e.printStackTrace(); } } + + /** + * Test whether NodeManager passes user-provided conf to + * UserGroupInformation class. If it reads this (incorrect) + * AuthenticationMethod enum an exception is thrown. + */ + @Test + public void testUserProvidedUGIConf() throws Exception { + Configuration dummyConf = new YarnConfiguration(); + dummyConf.set(CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION, + "DUMMYAUTH"); + NodeManager dummyNodeManager = new NodeManager(); + try { + dummyNodeManager.init(dummyConf); + } catch (IllegalArgumentException iae) { + dummyNodeManager.stop(); + return; + } + dummyNodeManager.stop(); + fail("Excepted IllegalArgumentException when initializing NM"); + } } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java index c795bfaa797..932e881443c 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/ResourceManager.java @@ -263,6 +263,7 @@ protected ResourceProfilesManager createResourceProfileManager() { @Override protected void serviceInit(Configuration conf) throws Exception { this.conf = conf; + UserGroupInformation.setConfiguration(conf); this.rmContext = new RMContextImpl(); rmContext.setResourceManager(this); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestResourceManager.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestResourceManager.java index 6282af497bc..17af9ad698b 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestResourceManager.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestResourceManager.java @@ -25,6 +25,7 @@ import java.util.Collection; import java.util.concurrent.TimeoutException; +import org.apache.hadoop.fs.CommonConfigurationKeysPublic; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.hadoop.conf.Configuration; @@ -329,4 +330,25 @@ protected void doSecureLogin() throws IOException { } } + /** + * Test whether ResourceManager passes user-provided conf to + * UserGroupInformation class. If it reads this (incorrect) + * AuthenticationMethod enum an exception is thrown. + */ + @Test + public void testUserProvidedUGIConf() throws Exception { + Configuration dummyConf = new YarnConfiguration(); + dummyConf.set(CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION, + "DUMMYAUTH"); + ResourceManager dummyResourceManager = new ResourceManager(); + try { + dummyResourceManager.init(dummyConf); + } catch (IllegalArgumentException iae) { + dummyResourceManager.stop(); + return; + } + dummyResourceManager.stop(); + fail("Excepted IllegalArgumentException when initializing RM"); + } + }