YARN-2890. MiniYARNCluster should start the timeline server based on the configuration. Contributed by Mit Desai.

(cherry picked from commit 51af8d367d)
This commit is contained in:
Zhijie Shen 2014-12-01 19:04:04 -08:00
parent d208c90148
commit d21ef79707
7 changed files with 67 additions and 34 deletions

View File

@ -453,7 +453,7 @@ public class TestJobHistoryEventHandler {
long currentTime = System.currentTimeMillis(); long currentTime = System.currentTimeMillis();
try { try {
yarnCluster = new MiniYARNCluster( yarnCluster = new MiniYARNCluster(
TestJobHistoryEventHandler.class.getSimpleName(), 1, 1, 1, 1, true); TestJobHistoryEventHandler.class.getSimpleName(), 1, 1, 1, 1);
yarnCluster.init(conf); yarnCluster.init(conf);
yarnCluster.start(); yarnCluster.start();
jheh.start(); jheh.start();

View File

@ -34,6 +34,58 @@ import org.junit.Test;
public class TestMRTimelineEventHandling { public class TestMRTimelineEventHandling {
@Test
public void testTimelineServiceStartInMiniCluster() throws Exception {
Configuration conf = new YarnConfiguration();
/*
* Timeline service should not start if the config is set to false
* Regardless to the value of MAPREDUCE_JOB_EMIT_TIMELINE_DATA
*/
conf.setBoolean(YarnConfiguration.TIMELINE_SERVICE_ENABLED, false);
conf.setBoolean(MRJobConfig.MAPREDUCE_JOB_EMIT_TIMELINE_DATA, true);
MiniMRYarnCluster cluster = null;
try {
cluster = new MiniMRYarnCluster(
TestJobHistoryEventHandler.class.getSimpleName(), 1);
cluster.init(conf);
cluster.start();
//verify that the timeline service is not started.
Assert.assertNull("Timeline Service should not have been started",
cluster.getApplicationHistoryServer());
//Run a MR job and verify it succeeds
Path inDir = new Path("input");
Path outDir = new Path("output");
RunningJob job =
UtilsForTests.runJobSucceed(new JobConf(conf), inDir, outDir);
Assert.assertEquals(JobStatus.SUCCEEDED,
job.getJobStatus().getState().getValue());
}
finally {
if(cluster != null) {
cluster.stop();
}
}
conf.setBoolean(YarnConfiguration.TIMELINE_SERVICE_ENABLED, false);
conf.setBoolean(MRJobConfig.MAPREDUCE_JOB_EMIT_TIMELINE_DATA, false);
cluster = null;
try {
cluster = new MiniMRYarnCluster(
TestJobHistoryEventHandler.class.getSimpleName(), 1);
cluster.init(conf);
cluster.start();
Assert.assertNull("Timeline Service should not have been started",
cluster.getApplicationHistoryServer());
}
finally {
if(cluster != null) {
cluster.stop();
}
}
}
@Test @Test
public void testMRTimelineEventHandling() throws Exception { public void testMRTimelineEventHandling() throws Exception {
Configuration conf = new YarnConfiguration(); Configuration conf = new YarnConfiguration();
@ -42,7 +94,7 @@ public class TestMRTimelineEventHandling {
MiniMRYarnCluster cluster = null; MiniMRYarnCluster cluster = null;
try { try {
cluster = new MiniMRYarnCluster( cluster = new MiniMRYarnCluster(
TestJobHistoryEventHandler.class.getSimpleName(), 1, true); TestJobHistoryEventHandler.class.getSimpleName(), 1);
cluster.init(conf); cluster.init(conf);
cluster.start(); cluster.start();
TimelineStore ts = cluster.getApplicationHistoryServer() TimelineStore ts = cluster.getApplicationHistoryServer()
@ -96,7 +148,7 @@ public class TestMRTimelineEventHandling {
MiniMRYarnCluster cluster = null; MiniMRYarnCluster cluster = null;
try { try {
cluster = new MiniMRYarnCluster( cluster = new MiniMRYarnCluster(
TestJobHistoryEventHandler.class.getSimpleName(), 1, true); TestJobHistoryEventHandler.class.getSimpleName(), 1);
cluster.init(conf); cluster.init(conf);
cluster.start(); cluster.start();
TimelineStore ts = cluster.getApplicationHistoryServer() TimelineStore ts = cluster.getApplicationHistoryServer()
@ -133,7 +185,7 @@ public class TestMRTimelineEventHandling {
cluster = null; cluster = null;
try { try {
cluster = new MiniMRYarnCluster( cluster = new MiniMRYarnCluster(
TestJobHistoryEventHandler.class.getSimpleName(), 1, true); TestJobHistoryEventHandler.class.getSimpleName(), 1);
cluster.init(conf); cluster.init(conf);
cluster.start(); cluster.start();
TimelineStore ts = cluster.getApplicationHistoryServer() TimelineStore ts = cluster.getApplicationHistoryServer()

View File

@ -72,11 +72,7 @@ public class MiniMRYarnCluster extends MiniYARNCluster {
} }
public MiniMRYarnCluster(String testName, int noOfNMs) { public MiniMRYarnCluster(String testName, int noOfNMs) {
this(testName, noOfNMs, false); super(testName, 1, noOfNMs, 4, 4);
}
public MiniMRYarnCluster(String testName, int noOfNMs, boolean enableAHS) {
super(testName, 1, noOfNMs, 4, 4, enableAHS);
historyServerWrapper = new JobHistoryServerWrapper(); historyServerWrapper = new JobHistoryServerWrapper();
addService(historyServerWrapper); addService(historyServerWrapper);
} }

View File

@ -133,6 +133,9 @@ Release 2.7.0 - UNRELEASED
YARN-2905. AggregatedLogsBlock page can infinitely loop if the aggregated YARN-2905. AggregatedLogsBlock page can infinitely loop if the aggregated
log file is corrupted (Varun Saxena via jlowe) log file is corrupted (Varun Saxena via jlowe)
YARN-2890. MiniYARNCluster should start the timeline server based on the
configuration. (Mit Desai via zjshen)
Release 2.6.0 - 2014-11-18 Release 2.6.0 - 2014-11-18
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -84,7 +84,7 @@ public class TestDistributedShell {
if (yarnCluster == null) { if (yarnCluster == null) {
yarnCluster = yarnCluster =
new MiniYARNCluster(TestDistributedShell.class.getSimpleName(), 1, new MiniYARNCluster(TestDistributedShell.class.getSimpleName(), 1,
numNodeManager, 1, 1, true); numNodeManager, 1, 1);
yarnCluster.init(conf); yarnCluster.init(conf);
yarnCluster.start(); yarnCluster.start();

View File

@ -295,7 +295,7 @@ public abstract class ProtocolHATestBase extends ClientBaseWithFixes {
conf.setBoolean(YarnConfiguration.AUTO_FAILOVER_ENABLED, false); conf.setBoolean(YarnConfiguration.AUTO_FAILOVER_ENABLED, false);
cluster = cluster =
new MiniYARNClusterForHATesting(TestRMFailover.class.getName(), 2, new MiniYARNClusterForHATesting(TestRMFailover.class.getName(), 2,
numOfNMs, 1, 1, false, overrideClientRMService, overrideRTS, numOfNMs, 1, 1, overrideClientRMService, overrideRTS,
overrideApplicationMasterService); overrideApplicationMasterService);
cluster.resetStartFailoverFlag(false); cluster.resetStartFailoverFlag(false);
cluster.init(conf); cluster.init(conf);
@ -326,10 +326,10 @@ public abstract class ProtocolHATestBase extends ClientBaseWithFixes {
public MiniYARNClusterForHATesting(String testName, public MiniYARNClusterForHATesting(String testName,
int numResourceManagers, int numNodeManagers, int numLocalDirs, int numResourceManagers, int numNodeManagers, int numLocalDirs,
int numLogDirs, boolean enableAHS, boolean overrideClientRMService, int numLogDirs, boolean overrideClientRMService,
boolean overrideRTS, boolean overrideApplicationMasterService) { boolean overrideRTS, boolean overrideApplicationMasterService) {
super(testName, numResourceManagers, numNodeManagers, numLocalDirs, super(testName, numResourceManagers, numNodeManagers, numLocalDirs,
numLogDirs, enableAHS); numLogDirs);
this.overrideClientRMService = overrideClientRMService; this.overrideClientRMService = overrideClientRMService;
this.overrideRTS = overrideRTS; this.overrideRTS = overrideRTS;
this.overrideApplicationMasterService = overrideApplicationMasterService; this.overrideApplicationMasterService = overrideApplicationMasterService;

View File

@ -57,7 +57,6 @@ import org.apache.hadoop.yarn.server.api.protocolrecords.RegisterNodeManagerResp
import org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryServer; import org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryServer;
import org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryStore; import org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryStore;
import org.apache.hadoop.yarn.server.applicationhistoryservice.MemoryApplicationHistoryStore; import org.apache.hadoop.yarn.server.applicationhistoryservice.MemoryApplicationHistoryStore;
import org.apache.hadoop.yarn.server.applicationhistoryservice.webapp.AHSWebApp;
import org.apache.hadoop.yarn.server.nodemanager.Context; import org.apache.hadoop.yarn.server.nodemanager.Context;
import org.apache.hadoop.yarn.server.nodemanager.NodeHealthCheckerService; import org.apache.hadoop.yarn.server.nodemanager.NodeHealthCheckerService;
import org.apache.hadoop.yarn.server.nodemanager.NodeManager; import org.apache.hadoop.yarn.server.nodemanager.NodeManager;
@ -120,7 +119,6 @@ public class MiniYARNCluster extends CompositeService {
private int numLocalDirs; private int numLocalDirs;
// Number of nm-log-dirs per nodemanager // Number of nm-log-dirs per nodemanager
private int numLogDirs; private int numLogDirs;
private boolean enableAHS;
/** /**
* @param testName name of the test * @param testName name of the test
@ -128,15 +126,13 @@ public class MiniYARNCluster extends CompositeService {
* @param numNodeManagers the number of node managers in the cluster * @param numNodeManagers the number of node managers in the cluster
* @param numLocalDirs the number of nm-local-dirs per nodemanager * @param numLocalDirs the number of nm-local-dirs per nodemanager
* @param numLogDirs the number of nm-log-dirs per nodemanager * @param numLogDirs the number of nm-log-dirs per nodemanager
* @param enableAHS enable ApplicationHistoryServer or not
*/ */
public MiniYARNCluster( public MiniYARNCluster(
String testName, int numResourceManagers, int numNodeManagers, String testName, int numResourceManagers, int numNodeManagers,
int numLocalDirs, int numLogDirs, boolean enableAHS) { int numLocalDirs, int numLogDirs) {
super(testName.replace("$", "")); super(testName.replace("$", ""));
this.numLocalDirs = numLocalDirs; this.numLocalDirs = numLocalDirs;
this.numLogDirs = numLogDirs; this.numLogDirs = numLogDirs;
this.enableAHS = enableAHS;
String testSubDir = testName.replace("$", ""); String testSubDir = testName.replace("$", "");
File targetWorkDir = new File("target", testSubDir); File targetWorkDir = new File("target", testSubDir);
try { try {
@ -186,20 +182,6 @@ public class MiniYARNCluster extends CompositeService {
nodeManagers = new NodeManager[numNodeManagers]; nodeManagers = new NodeManager[numNodeManagers];
} }
/**
* @param testName name of the test
* @param numResourceManagers the number of resource managers in the cluster
* @param numNodeManagers the number of node managers in the cluster
* @param numLocalDirs the number of nm-local-dirs per nodemanager
* @param numLogDirs the number of nm-log-dirs per nodemanager
*/
public MiniYARNCluster(
String testName, int numResourceManagers, int numNodeManagers,
int numLocalDirs, int numLogDirs) {
this(testName, numResourceManagers, numNodeManagers, numLocalDirs,
numLogDirs, false);
}
/** /**
* @param testName name of the test * @param testName name of the test
* @param numNodeManagers the number of node managers in the cluster * @param numNodeManagers the number of node managers in the cluster
@ -260,8 +242,8 @@ public class MiniYARNCluster extends CompositeService {
addService(new NodeManagerWrapper(index)); addService(new NodeManagerWrapper(index));
} }
if (enableAHS) { if(conf.getBoolean(YarnConfiguration.TIMELINE_SERVICE_ENABLED, false)) {
addService(new ApplicationHistoryServerWrapper()); addService(new ApplicationHistoryServerWrapper());
} }
super.serviceInit( super.serviceInit(