YARN-2890. MiniYarnCluster should turn on timeline service if configured to do so. Contributed by Mit Desai.
(cherry picked from commit265ed1fe80
) (cherry picked from commit55b794e7fa
)
This commit is contained in:
parent
9c4a6e1270
commit
dba2b60fdd
|
@ -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();
|
||||||
|
|
|
@ -34,6 +34,52 @@ 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());
|
||||||
|
}
|
||||||
|
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();
|
||||||
|
|
||||||
|
//verify that the timeline service is not started.
|
||||||
|
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 +88,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 +142,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 +179,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()
|
||||||
|
|
|
@ -220,6 +220,9 @@ Release 2.6.1 - 2015-09-09
|
||||||
YARN-3544. Got back AM logs link on the RM web UI for a completed app.
|
YARN-3544. Got back AM logs link on the RM web UI for a completed app.
|
||||||
(Xuan Gong via zjshen)
|
(Xuan Gong via zjshen)
|
||||||
|
|
||||||
|
YARN-2890. MiniYarnCluster should turn on timeline service if
|
||||||
|
configured to do so. (Mit Desai via hitesh)
|
||||||
|
|
||||||
Release 2.6.0 - 2014-11-18
|
Release 2.6.0 - 2014-11-18
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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;
|
||||||
|
@ -260,7 +259,8 @@ public class MiniYARNCluster extends CompositeService {
|
||||||
addService(new NodeManagerWrapper(index));
|
addService(new NodeManagerWrapper(index));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enableAHS) {
|
if(conf.getBoolean(YarnConfiguration.TIMELINE_SERVICE_ENABLED,
|
||||||
|
YarnConfiguration.DEFAULT_TIMELINE_SERVICE_ENABLED) || enableAHS) {
|
||||||
addService(new ApplicationHistoryServerWrapper());
|
addService(new ApplicationHistoryServerWrapper());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,115 @@
|
||||||
|
/**
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.hadoop.yarn.server;
|
||||||
|
|
||||||
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
import org.apache.hadoop.yarn.conf.YarnConfiguration;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class TestMiniYarnCluster {
|
||||||
|
@Test
|
||||||
|
public void testTimelineServiceStartInMiniCluster() throws Exception {
|
||||||
|
Configuration conf = new YarnConfiguration();
|
||||||
|
int numNodeManagers = 1;
|
||||||
|
int numLocalDirs = 1;
|
||||||
|
int numLogDirs = 1;
|
||||||
|
boolean enableAHS;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Timeline service should not start if TIMELINE_SERVICE_ENABLED == false
|
||||||
|
* and enableAHS flag == false
|
||||||
|
*/
|
||||||
|
conf.setBoolean(YarnConfiguration.TIMELINE_SERVICE_ENABLED, false);
|
||||||
|
enableAHS = false;
|
||||||
|
MiniYARNCluster cluster = null;
|
||||||
|
try {
|
||||||
|
cluster = new MiniYARNCluster(TestMiniYarnCluster.class.getSimpleName(),
|
||||||
|
numNodeManagers, numLocalDirs, numLogDirs, numLogDirs, enableAHS);
|
||||||
|
cluster.init(conf);
|
||||||
|
cluster.start();
|
||||||
|
|
||||||
|
//verify that the timeline service is not started.
|
||||||
|
Assert.assertNull("Timeline Service should not have been started",
|
||||||
|
cluster.getApplicationHistoryServer());
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if(cluster != null) {
|
||||||
|
cluster.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Timeline service should start if TIMELINE_SERVICE_ENABLED == true
|
||||||
|
* and enableAHS == false
|
||||||
|
*/
|
||||||
|
conf.setBoolean(YarnConfiguration.TIMELINE_SERVICE_ENABLED, true);
|
||||||
|
enableAHS = false;
|
||||||
|
cluster = null;
|
||||||
|
try {
|
||||||
|
cluster = new MiniYARNCluster(TestMiniYarnCluster.class.getSimpleName(),
|
||||||
|
numNodeManagers, numLocalDirs, numLogDirs, numLogDirs, enableAHS);
|
||||||
|
cluster.init(conf);
|
||||||
|
cluster.start();
|
||||||
|
|
||||||
|
//Timeline service may sometime take a while to get started
|
||||||
|
int wait = 0;
|
||||||
|
while(cluster.getApplicationHistoryServer() == null && wait < 20) {
|
||||||
|
Thread.sleep(500);
|
||||||
|
wait++;
|
||||||
|
}
|
||||||
|
//verify that the timeline service is started.
|
||||||
|
Assert.assertNotNull("Timeline Service should have been started",
|
||||||
|
cluster.getApplicationHistoryServer());
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if(cluster != null) {
|
||||||
|
cluster.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Timeline service should start if TIMELINE_SERVICE_ENABLED == false
|
||||||
|
* and enableAHS == true
|
||||||
|
*/
|
||||||
|
conf.setBoolean(YarnConfiguration.TIMELINE_SERVICE_ENABLED, false);
|
||||||
|
enableAHS = true;
|
||||||
|
cluster = null;
|
||||||
|
try {
|
||||||
|
cluster = new MiniYARNCluster(TestMiniYarnCluster.class.getSimpleName(),
|
||||||
|
numNodeManagers, numLocalDirs, numLogDirs, numLogDirs, enableAHS);
|
||||||
|
cluster.init(conf);
|
||||||
|
cluster.start();
|
||||||
|
|
||||||
|
//Timeline service may sometime take a while to get started
|
||||||
|
int wait = 0;
|
||||||
|
while(cluster.getApplicationHistoryServer() == null && wait < 20) {
|
||||||
|
Thread.sleep(500);
|
||||||
|
wait++;
|
||||||
|
}
|
||||||
|
//verify that the timeline service is started.
|
||||||
|
Assert.assertNotNull("Timeline Service should have been started",
|
||||||
|
cluster.getApplicationHistoryServer());
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if(cluster != null) {
|
||||||
|
cluster.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue