YARN-9668. UGI conf doesn't read user overridden configurations on RM and NM startup. (Contributed by Jonanthan Hung)
This commit is contained in:
parent
befafe9408
commit
3ff2148482
|
@ -350,6 +350,7 @@ public class NodeManager extends CompositeService
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void serviceInit(Configuration conf) throws Exception {
|
protected void serviceInit(Configuration conf) throws Exception {
|
||||||
|
UserGroupInformation.setConfiguration(conf);
|
||||||
rmWorkPreservingRestartEnabled = conf.getBoolean(YarnConfiguration
|
rmWorkPreservingRestartEnabled = conf.getBoolean(YarnConfiguration
|
||||||
.RM_WORK_PRESERVING_RECOVERY_ENABLED,
|
.RM_WORK_PRESERVING_RECOVERY_ENABLED,
|
||||||
YarnConfiguration.DEFAULT_RM_WORK_PRESERVING_RECOVERY_ENABLED);
|
YarnConfiguration.DEFAULT_RM_WORK_PRESERVING_RECOVERY_ENABLED);
|
||||||
|
|
|
@ -23,6 +23,7 @@ import static org.junit.Assert.fail;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
|
||||||
import org.apache.hadoop.yarn.conf.YarnConfiguration;
|
import org.apache.hadoop.yarn.conf.YarnConfiguration;
|
||||||
import org.apache.hadoop.yarn.exceptions.YarnRuntimeException;
|
import org.apache.hadoop.yarn.exceptions.YarnRuntimeException;
|
||||||
import org.apache.hadoop.yarn.server.nodemanager.containermanager.container.ContainerEvent;
|
import org.apache.hadoop.yarn.server.nodemanager.containermanager.container.ContainerEvent;
|
||||||
|
@ -30,7 +31,9 @@ import org.apache.hadoop.yarn.server.nodemanager.containermanager.container.Cont
|
||||||
import org.apache.hadoop.yarn.server.nodemanager.containermanager.container.ContainerState;
|
import org.apache.hadoop.yarn.server.nodemanager.containermanager.container.ContainerState;
|
||||||
import org.apache.hadoop.yarn.server.nodemanager.nodelabels.NodeLabelsProvider;
|
import org.apache.hadoop.yarn.server.nodemanager.nodelabels.NodeLabelsProvider;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.junit.rules.ExpectedException;
|
||||||
|
|
||||||
public class TestNodeManager {
|
public class TestNodeManager {
|
||||||
|
|
||||||
|
@ -42,6 +45,9 @@ public class TestNodeManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public ExpectedException thrown = ExpectedException.none();
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testContainerExecutorInitCall() {
|
public void testContainerExecutorInitCall() {
|
||||||
NodeManager nm = new NodeManager();
|
NodeManager nm = new NodeManager();
|
||||||
|
@ -170,4 +176,26 @@ public class TestNodeManager {
|
||||||
e.printStackTrace();
|
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 {
|
||||||
|
thrown.expect(IllegalArgumentException.class);
|
||||||
|
thrown.expectMessage("Invalid attribute value for "
|
||||||
|
+ CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION
|
||||||
|
+ " of DUMMYAUTH");
|
||||||
|
Configuration dummyConf = new YarnConfiguration();
|
||||||
|
dummyConf.set(CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION,
|
||||||
|
"DUMMYAUTH");
|
||||||
|
NodeManager dummyNodeManager = new NodeManager();
|
||||||
|
try {
|
||||||
|
dummyNodeManager.init(dummyConf);
|
||||||
|
} finally {
|
||||||
|
dummyNodeManager.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -248,6 +248,7 @@ public class ResourceManager extends CompositeService
|
||||||
@Override
|
@Override
|
||||||
protected void serviceInit(Configuration conf) throws Exception {
|
protected void serviceInit(Configuration conf) throws Exception {
|
||||||
this.conf = conf;
|
this.conf = conf;
|
||||||
|
UserGroupInformation.setConfiguration(conf);
|
||||||
this.rmContext = new RMContextImpl();
|
this.rmContext = new RMContextImpl();
|
||||||
rmContext.setResourceManager(this);
|
rmContext.setResourceManager(this);
|
||||||
|
|
||||||
|
|
|
@ -2098,9 +2098,10 @@ public class TestRMRestart extends ParameterizedSchedulerTestBase {
|
||||||
conf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS, 2);
|
conf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS, 2);
|
||||||
conf.set(CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION,
|
conf.set(CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION,
|
||||||
"kerberos");
|
"kerberos");
|
||||||
|
UserGroupInformation.setConfiguration(conf);
|
||||||
|
|
||||||
// start RM
|
// start RM
|
||||||
MockRM rm1 = createMockRM(conf);
|
MockRM rm1 = new TestSecurityMockRM(conf);
|
||||||
rm1.start();
|
rm1.start();
|
||||||
final MockNM nm1 =
|
final MockNM nm1 =
|
||||||
new MockNM("127.0.0.1:1234", 15120, rm1.getResourceTrackerService());
|
new MockNM("127.0.0.1:1234", 15120, rm1.getResourceTrackerService());
|
||||||
|
@ -2108,7 +2109,7 @@ public class TestRMRestart extends ParameterizedSchedulerTestBase {
|
||||||
RMApp app0 = rm1.submitApp(200);
|
RMApp app0 = rm1.submitApp(200);
|
||||||
final MockAM am0 = MockRM.launchAndRegisterAM(app0, rm1, nm1);
|
final MockAM am0 = MockRM.launchAndRegisterAM(app0, rm1, nm1);
|
||||||
|
|
||||||
MockRM rm2 = new MockRM(conf, rm1.getRMStateStore()) {
|
MockRM rm2 = new TestSecurityMockRM(conf, rm1.getRMStateStore()) {
|
||||||
@Override
|
@Override
|
||||||
protected ResourceTrackerService createResourceTrackerService() {
|
protected ResourceTrackerService createResourceTrackerService() {
|
||||||
return new ResourceTrackerService(this.rmContext,
|
return new ResourceTrackerService(this.rmContext,
|
||||||
|
|
|
@ -27,6 +27,7 @@ import java.util.concurrent.TimeoutException;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
import org.apache.hadoop.http.lib.StaticUserWebFilter;
|
import org.apache.hadoop.http.lib.StaticUserWebFilter;
|
||||||
import org.apache.hadoop.net.NetworkTopology;
|
import org.apache.hadoop.net.NetworkTopology;
|
||||||
|
@ -51,13 +52,18 @@ import org.apache.hadoop.yarn.util.resource.Resources;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.junit.rules.ExpectedException;
|
||||||
|
|
||||||
public class TestResourceManager {
|
public class TestResourceManager {
|
||||||
private static final Log LOG = LogFactory.getLog(TestResourceManager.class);
|
private static final Log LOG = LogFactory.getLog(TestResourceManager.class);
|
||||||
|
|
||||||
private ResourceManager resourceManager = null;
|
private ResourceManager resourceManager = null;
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public ExpectedException thrown = ExpectedException.none();
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
Configuration conf = new YarnConfiguration();
|
Configuration conf = new YarnConfiguration();
|
||||||
|
@ -328,4 +334,26 @@ public class TestResourceManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 {
|
||||||
|
thrown.expect(IllegalArgumentException.class);
|
||||||
|
thrown.expectMessage("Invalid attribute value for "
|
||||||
|
+ CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION
|
||||||
|
+ " of DUMMYAUTH");
|
||||||
|
Configuration dummyConf = new YarnConfiguration();
|
||||||
|
dummyConf.set(CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION,
|
||||||
|
"DUMMYAUTH");
|
||||||
|
ResourceManager dummyResourceManager = new ResourceManager();
|
||||||
|
try {
|
||||||
|
dummyResourceManager.init(dummyConf);
|
||||||
|
} finally {
|
||||||
|
dummyResourceManager.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue