MAPREDUCE-3532. Modified NM to report correct http address when an ephemeral web port is configured. Contributed by Bhallamudi Venkata Siva Kamesh.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1231342 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
0c278b0f63
commit
90f096d86c
|
@ -487,6 +487,9 @@ Release 0.23.1 - Unreleased
|
||||||
MAPREDUCE-3656. Fixed a race condition in MR AM which is failing the sort
|
MAPREDUCE-3656. Fixed a race condition in MR AM which is failing the sort
|
||||||
benchmark consistently. (Siddarth Seth via vinodkv)
|
benchmark consistently. (Siddarth Seth via vinodkv)
|
||||||
|
|
||||||
|
MAPREDUCE-3532. Modified NM to report correct http address when an ephemeral
|
||||||
|
web port is configured. (Bhallamudi Venkata Siva Kamesh via vinodkv)
|
||||||
|
|
||||||
Release 0.23.0 - 2011-11-01
|
Release 0.23.0 - 2011-11-01
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -20,6 +20,7 @@ package org.apache.hadoop.yarn.server.nodemanager.webapp;
|
||||||
|
|
||||||
import static org.apache.hadoop.yarn.util.StringHelper.pajoin;
|
import static org.apache.hadoop.yarn.util.StringHelper.pajoin;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
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.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
@ -65,6 +66,9 @@ public class WebServer extends AbstractService {
|
||||||
this.webApp =
|
this.webApp =
|
||||||
WebApps.$for("node", Context.class, this.nmContext, "ws")
|
WebApps.$for("node", Context.class, this.nmContext, "ws")
|
||||||
.at(bindAddress).with(getConfig()).start(this.nmWebApp);
|
.at(bindAddress).with(getConfig()).start(this.nmWebApp);
|
||||||
|
int port = this.webApp.httpServer().getPort();
|
||||||
|
String webAddress = StringUtils.split(bindAddress, ':')[0] + ":" + port;
|
||||||
|
getConfig().set(YarnConfiguration.NM_WEBAPP_ADDRESS, webAddress);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
String msg = "NMWebapps failed to start.";
|
String msg = "NMWebapps failed to start.";
|
||||||
LOG.error(msg, e);
|
LOG.error(msg, e);
|
||||||
|
|
|
@ -26,6 +26,7 @@ import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.Writer;
|
import java.io.Writer;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
import org.apache.hadoop.fs.FileUtil;
|
import org.apache.hadoop.fs.FileUtil;
|
||||||
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
|
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
|
||||||
|
@ -51,6 +52,7 @@ import org.apache.hadoop.yarn.server.security.ApplicationACLsManager;
|
||||||
import org.apache.hadoop.yarn.util.BuilderUtils;
|
import org.apache.hadoop.yarn.util.BuilderUtils;
|
||||||
import org.apache.hadoop.yarn.util.ConverterUtils;
|
import org.apache.hadoop.yarn.util.ConverterUtils;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
|
import org.junit.Assert;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
@ -72,6 +74,45 @@ public class TestNMWebServer {
|
||||||
FileUtil.fullyDelete(testRootDir);
|
FileUtil.fullyDelete(testRootDir);
|
||||||
FileUtil.fullyDelete(testLogDir);
|
FileUtil.fullyDelete(testLogDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String startNMWebAppServer(String webAddr) {
|
||||||
|
Context nmContext = new NodeManager.NMContext();
|
||||||
|
ResourceView resourceView = new ResourceView() {
|
||||||
|
@Override
|
||||||
|
public long getVmemAllocatedForContainers() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public long getPmemAllocatedForContainers() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Configuration conf = new Configuration();
|
||||||
|
conf.set(YarnConfiguration.NM_LOCAL_DIRS, testRootDir.getAbsolutePath());
|
||||||
|
conf.set(YarnConfiguration.NM_LOG_DIRS, testLogDir.getAbsolutePath());
|
||||||
|
NodeHealthCheckerService healthChecker = new NodeHealthCheckerService();
|
||||||
|
healthChecker.init(conf);
|
||||||
|
LocalDirsHandlerService dirsHandler = healthChecker.getDiskHandler();
|
||||||
|
conf.set(YarnConfiguration.NM_WEBAPP_ADDRESS, webAddr);
|
||||||
|
WebServer server = new WebServer(nmContext, resourceView,
|
||||||
|
new ApplicationACLsManager(conf), dirsHandler);
|
||||||
|
server.init(conf);
|
||||||
|
server.start();
|
||||||
|
String webAppAddr = conf.get(YarnConfiguration.NM_WEBAPP_ADDRESS);
|
||||||
|
return StringUtils.split(webAppAddr, ':')[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNMWebAppWithOutPort() throws IOException {
|
||||||
|
String port = startNMWebAppServer("0.0.0.0");
|
||||||
|
Assert.assertTrue("Port is not updated", Integer.parseInt(port) > 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNMWebAppWithEphemeralPort() throws IOException {
|
||||||
|
String port = startNMWebAppServer("0.0.0.0:0");
|
||||||
|
Assert.assertTrue("Port is not updated", Integer.parseInt(port) > 0);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testNMWebApp() throws IOException {
|
public void testNMWebApp() throws IOException {
|
||||||
|
|
Loading…
Reference in New Issue