MAPREDUCE-3828. Ensure that urls in single-node mode are correct. Contributed by Siddharth Seth.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1241791 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
4d3dc530e8
commit
1de681b896
@ -775,6 +775,9 @@ Release 0.23.1 - Unreleased
|
|||||||
into the container request table when multiple hosts for a split happen to
|
into the container request table when multiple hosts for a split happen to
|
||||||
be on the same rack. (Siddarth Seth via vinodkv)
|
be on the same rack. (Siddarth Seth via vinodkv)
|
||||||
|
|
||||||
|
MAPREDUCE-3828. Ensure that urls in single-node mode are correct. (sseth
|
||||||
|
via acmurthy)
|
||||||
|
|
||||||
Release 0.23.0 - 2011-11-01
|
Release 0.23.0 - 2011-11-01
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
@ -20,8 +20,13 @@
|
|||||||
|
|
||||||
import com.google.common.base.Joiner;
|
import com.google.common.base.Joiner;
|
||||||
import com.google.common.base.Splitter;
|
import com.google.common.base.Splitter;
|
||||||
|
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.net.InetSocketAddress;
|
||||||
|
import java.net.UnknownHostException;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
import org.apache.hadoop.net.NetUtils;
|
||||||
|
|
||||||
public class YarnConfiguration extends Configuration {
|
public class YarnConfiguration extends Configuration {
|
||||||
private static final Splitter ADDR_SPLITTER = Splitter.on(':').trimResults();
|
private static final Splitter ADDR_SPLITTER = Splitter.on(':').trimResults();
|
||||||
@ -543,7 +548,25 @@ public static String getRMWebAppHostAndPort(Configuration conf) {
|
|||||||
// Use apps manager address to figure out the host for webapp
|
// Use apps manager address to figure out the host for webapp
|
||||||
addr = conf.get(YarnConfiguration.RM_ADDRESS, YarnConfiguration.DEFAULT_RM_ADDRESS);
|
addr = conf.get(YarnConfiguration.RM_ADDRESS, YarnConfiguration.DEFAULT_RM_ADDRESS);
|
||||||
String host = ADDR_SPLITTER.split(addr).iterator().next();
|
String host = ADDR_SPLITTER.split(addr).iterator().next();
|
||||||
return JOINER.join(host, ":", port);
|
String rmAddress = JOINER.join(host, ":", port);
|
||||||
|
InetSocketAddress address = NetUtils.createSocketAddr(
|
||||||
|
rmAddress, DEFAULT_RM_WEBAPP_PORT, RM_WEBAPP_ADDRESS);
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
InetAddress resolved = address.getAddress();
|
||||||
|
if (resolved == null || resolved.isAnyLocalAddress() ||
|
||||||
|
resolved.isLoopbackAddress()) {
|
||||||
|
String lh = host;
|
||||||
|
try {
|
||||||
|
lh = InetAddress.getLocalHost().getCanonicalHostName();
|
||||||
|
} catch (UnknownHostException e) {
|
||||||
|
//Ignore and fallback.
|
||||||
|
}
|
||||||
|
sb.append(lh);
|
||||||
|
} else {
|
||||||
|
sb.append(address.getHostName());
|
||||||
|
}
|
||||||
|
sb.append(":").append(address.getPort());
|
||||||
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getRMWebAppURL(Configuration conf) {
|
public static String getRMWebAppURL(Configuration conf) {
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
package org.apache.hadoop.yarn.conf;
|
package org.apache.hadoop.yarn.conf;
|
||||||
|
|
||||||
|
|
||||||
import junit.framework.Assert;
|
import junit.framework.Assert;
|
||||||
|
|
||||||
import org.apache.hadoop.yarn.conf.YarnConfiguration;
|
import org.apache.hadoop.yarn.conf.YarnConfiguration;
|
||||||
@ -32,20 +31,25 @@ public void testDefaultRMWebUrl() throws Exception {
|
|||||||
String rmWebUrl = YarnConfiguration.getRMWebAppURL(conf);
|
String rmWebUrl = YarnConfiguration.getRMWebAppURL(conf);
|
||||||
// shouldn't have a "/" on the end of the url as all the other uri routinnes
|
// shouldn't have a "/" on the end of the url as all the other uri routinnes
|
||||||
// specifically add slashes and Jetty doesn't handle double slashes.
|
// specifically add slashes and Jetty doesn't handle double slashes.
|
||||||
Assert.assertEquals("RM Web Url is not correct", "http://0.0.0.0:8088",
|
Assert.assertNotSame("RM Web Url is not correct", "http://0.0.0.0:8088",
|
||||||
rmWebUrl);
|
rmWebUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRMWebUrlSpecified() throws Exception {
|
public void testRMWebUrlSpecified() throws Exception {
|
||||||
YarnConfiguration conf = new YarnConfiguration();
|
YarnConfiguration conf = new YarnConfiguration();
|
||||||
// seems a bit odd but right now we are forcing webapp for RM to be RM_ADDRESS
|
// seems a bit odd but right now we are forcing webapp for RM to be
|
||||||
|
// RM_ADDRESS
|
||||||
// for host and use the port from the RM_WEBAPP_ADDRESS
|
// for host and use the port from the RM_WEBAPP_ADDRESS
|
||||||
conf.set(YarnConfiguration.RM_WEBAPP_ADDRESS, "footesting:99110");
|
conf.set(YarnConfiguration.RM_WEBAPP_ADDRESS, "fortesting:24543");
|
||||||
conf.set(YarnConfiguration.RM_ADDRESS, "rmtesting:9999");
|
conf.set(YarnConfiguration.RM_ADDRESS, "rmtesting:9999");
|
||||||
String rmWebUrl = YarnConfiguration.getRMWebAppURL(conf);
|
String rmWebUrl = YarnConfiguration.getRMWebAppURL(conf);
|
||||||
Assert.assertEquals("RM Web Url is not correct", "http://rmtesting:99110",
|
String[] parts = rmWebUrl.split(":");
|
||||||
rmWebUrl);
|
Assert.assertEquals("RM Web URL Port is incrrect", 24543,
|
||||||
|
Integer.valueOf(parts[parts.length - 1]).intValue());
|
||||||
|
Assert.assertNotSame(
|
||||||
|
"RM Web Url not resolved correctly. Should not be rmtesting",
|
||||||
|
"http://rmtesting:24543", rmWebUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user