|
@@ -33,7 +33,6 @@ import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMESERVICE_ID;
|
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_SERVER_HTTPS_KEYPASSWORD_KEY;
|
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_SERVER_HTTPS_KEYSTORE_PASSWORD_KEY;
|
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_SERVER_HTTPS_TRUSTSTORE_PASSWORD_KEY;
|
|
|
-import static org.apache.hadoop.hdfs.client.HdfsClientConfigKeys.DFS_NAMENODE_SERVICE_RPC_PORT_DEFAULT;
|
|
|
import static org.apache.hadoop.test.GenericTestUtils.assertExceptionContains;
|
|
|
import static org.apache.hadoop.test.PlatformAssumptions.assumeNotWindows;
|
|
|
import static org.hamcrest.CoreMatchers.not;
|
|
@@ -84,9 +83,9 @@ import com.google.common.collect.Sets;
|
|
|
|
|
|
public class TestDFSUtil {
|
|
|
|
|
|
- private static final String NS1_NN_ADDR = "ns1-nn.example.com:9820";
|
|
|
- private static final String NS1_NN1_ADDR = "ns1-nn1.example.com:9820";
|
|
|
- private static final String NS1_NN2_ADDR = "ns1-nn2.example.com:9820";
|
|
|
+ static final String NS1_NN_ADDR = "ns1-nn.example.com:9820";
|
|
|
+ static final String NS1_NN1_ADDR = "ns1-nn1.example.com:9820";
|
|
|
+ static final String NS1_NN2_ADDR = "ns1-nn2.example.com:9820";
|
|
|
|
|
|
/**
|
|
|
* Reset to default UGI settings since some tests change them.
|
|
@@ -274,13 +273,13 @@ public class TestDFSUtil {
|
|
|
assertEquals(1, nn1Map.size());
|
|
|
InetSocketAddress addr = nn1Map.get(null);
|
|
|
assertEquals("localhost", addr.getHostName());
|
|
|
- assertEquals(DFS_NAMENODE_SERVICE_RPC_PORT_DEFAULT, addr.getPort());
|
|
|
+ assertEquals(9000, addr.getPort());
|
|
|
|
|
|
Map<String, InetSocketAddress> nn2Map = nnMap.get("nn2");
|
|
|
assertEquals(1, nn2Map.size());
|
|
|
addr = nn2Map.get(null);
|
|
|
assertEquals("localhost", addr.getHostName());
|
|
|
- assertEquals(DFS_NAMENODE_SERVICE_RPC_PORT_DEFAULT, addr.getPort());
|
|
|
+ assertEquals(9001, addr.getPort());
|
|
|
|
|
|
// Test - can look up nameservice ID from service address
|
|
|
checkNameServiceId(conf, NN1_ADDRESS, "nn1");
|
|
@@ -315,8 +314,7 @@ public class TestDFSUtil {
|
|
|
Map<String, InetSocketAddress> defaultNsMap = addrMap.get(null);
|
|
|
assertEquals(1, defaultNsMap.size());
|
|
|
|
|
|
- assertEquals(DFS_NAMENODE_SERVICE_RPC_PORT_DEFAULT,
|
|
|
- defaultNsMap.get(null).getPort());
|
|
|
+ assertEquals(9999, defaultNsMap.get(null).getPort());
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -493,10 +491,6 @@ public class TestDFSUtil {
|
|
|
final String NS1_NN2_HOST = "ns1-nn2.example.com:9820";
|
|
|
final String NS2_NN1_HOST = "ns2-nn1.example.com:9820";
|
|
|
final String NS2_NN2_HOST = "ns2-nn2.example.com:9820";
|
|
|
- final String NS1_NN1_SERVICE_HOST = "ns1-nn1.example.com:9840";
|
|
|
- final String NS1_NN2_SERVICE_HOST = "ns1-nn2.example.com:9840";
|
|
|
- final String NS2_NN1_SERVICE_HOST = "ns2-nn1.example.com:9840";
|
|
|
- final String NS2_NN2_SERVICE_HOST = "ns2-nn2.example.com:9840";
|
|
|
conf.set(CommonConfigurationKeys.FS_DEFAULT_NAME_KEY, "hdfs://ns1");
|
|
|
|
|
|
// Two nameservices, each with two NNs.
|
|
@@ -530,14 +524,12 @@ public class TestDFSUtil {
|
|
|
assertEquals(NS2_NN1_HOST, map.get("ns2").get("ns2-nn1").toString());
|
|
|
assertEquals(NS2_NN2_HOST, map.get("ns2").get("ns2-nn2").toString());
|
|
|
|
|
|
- assertEquals(NS1_NN1_SERVICE_HOST,
|
|
|
+ assertEquals(NS1_NN1_HOST,
|
|
|
DFSUtil.getNamenodeServiceAddr(conf, "ns1", "ns1-nn1"));
|
|
|
- assertEquals(NS1_NN2_SERVICE_HOST,
|
|
|
+ assertEquals(NS1_NN2_HOST,
|
|
|
DFSUtil.getNamenodeServiceAddr(conf, "ns1", "ns1-nn2"));
|
|
|
- assertEquals(NS2_NN1_SERVICE_HOST,
|
|
|
+ assertEquals(NS2_NN1_HOST,
|
|
|
DFSUtil.getNamenodeServiceAddr(conf, "ns2", "ns2-nn1"));
|
|
|
- assertEquals(NS2_NN2_SERVICE_HOST,
|
|
|
- DFSUtil.getNamenodeServiceAddr(conf, "ns2", "ns2-nn2"));
|
|
|
|
|
|
// No nameservice was given and we can't determine which service addr
|
|
|
// to use as two nameservices could share a namenode ID.
|
|
@@ -563,11 +555,9 @@ public class TestDFSUtil {
|
|
|
|
|
|
// One nameservice with two NNs
|
|
|
final String NS1_NN1_HOST = "ns1-nn1.example.com:9820";
|
|
|
- final String NS1_NN1_HOST_SVC = "ns1-nn1.example.com:9821";
|
|
|
- final String NS1_NN1_HOST_DEFAULT_SVC = "ns1-nn1.example.com:9840";
|
|
|
- final String NS1_NN2_HOST = "ns1-nn2.example.com:9820";
|
|
|
+ final String NS1_NN1_HOST_SVC = "ns1-nn2.example.com:9821";
|
|
|
+ final String NS1_NN2_HOST = "ns1-nn1.example.com:9820";
|
|
|
final String NS1_NN2_HOST_SVC = "ns1-nn2.example.com:9821";
|
|
|
- final String NS1_NN2_HOST_DEFAULT_SVC = "ns1-nn2.example.com:9840";
|
|
|
|
|
|
conf.set(DFS_NAMESERVICES, "ns1");
|
|
|
conf.set(DFSUtil.addKeySuffixes(DFS_HA_NAMENODES_KEY_PREFIX, "ns1"),"nn1,nn2");
|
|
@@ -577,15 +567,12 @@ public class TestDFSUtil {
|
|
|
conf.set(DFSUtil.addKeySuffixes(
|
|
|
DFS_NAMENODE_RPC_ADDRESS_KEY, "ns1", "nn2"), NS1_NN2_HOST);
|
|
|
|
|
|
- // The default service rpc address is used if no service address is defined
|
|
|
- assertEquals(NS1_NN1_HOST_DEFAULT_SVC,
|
|
|
- DFSUtil.getNamenodeServiceAddr(conf, null, "nn1"));
|
|
|
- assertEquals(NS1_NN2_HOST_DEFAULT_SVC,
|
|
|
- DFSUtil.getNamenodeServiceAddr(conf, null, "nn2"));
|
|
|
+ // The rpc address is used if no service address is defined
|
|
|
+ assertEquals(NS1_NN1_HOST, DFSUtil.getNamenodeServiceAddr(conf, null, "nn1"));
|
|
|
+ assertEquals(NS1_NN2_HOST, DFSUtil.getNamenodeServiceAddr(conf, null, "nn2"));
|
|
|
|
|
|
// A nameservice is specified explicitly
|
|
|
- assertEquals(NS1_NN1_HOST_DEFAULT_SVC,
|
|
|
- DFSUtil.getNamenodeServiceAddr(conf, "ns1", "nn1"));
|
|
|
+ assertEquals(NS1_NN1_HOST, DFSUtil.getNamenodeServiceAddr(conf, "ns1", "nn1"));
|
|
|
assertEquals(null, DFSUtil.getNamenodeServiceAddr(conf, "invalid", "nn1"));
|
|
|
|
|
|
// The service addrs are used when they are defined
|
|
@@ -1008,92 +995,6 @@ public class TestDFSUtil {
|
|
|
Assert.assertEquals(null, DFSUtil.getPassword(conf,"invalid-alias"));
|
|
|
}
|
|
|
|
|
|
- @Test
|
|
|
- public void testGetNNServiceRpcAddresses() throws IOException {
|
|
|
- Configuration conf = new HdfsConfiguration();
|
|
|
- final String NN_HOST = "nn.example.com";
|
|
|
- final String NN_ADDRESS = "hdfs://" + NN_HOST + ":9000/";
|
|
|
- conf.set(FS_DEFAULT_NAME_KEY, NN_ADDRESS);
|
|
|
-
|
|
|
- // No service RPC, no rpc
|
|
|
- Map<String, Map<String, InetSocketAddress>> nsMap = DFSUtil
|
|
|
- .getNNServiceRpcAddresses(conf);
|
|
|
- assertEquals(1, nsMap.size());
|
|
|
- InetSocketAddress address = nsMap.get(null).get(null);
|
|
|
- assertEquals(DFS_NAMENODE_SERVICE_RPC_PORT_DEFAULT,
|
|
|
- address.getPort());
|
|
|
- assertEquals(NN_HOST, address.getHostName());
|
|
|
-
|
|
|
- // No service RPC
|
|
|
- final String RPC_ADDRESS = NN_HOST + ":9191";
|
|
|
- conf.set(DFS_NAMENODE_RPC_ADDRESS_KEY, RPC_ADDRESS);
|
|
|
- nsMap = DFSUtil.getNNServiceRpcAddresses(conf);
|
|
|
- assertEquals(1, nsMap.size());
|
|
|
- address = nsMap.get(null).get(null);
|
|
|
- assertEquals(DFS_NAMENODE_SERVICE_RPC_PORT_DEFAULT,
|
|
|
- address.getPort());
|
|
|
- assertEquals(NN_HOST, address.getHostName());
|
|
|
-
|
|
|
- // Service RPC present
|
|
|
- final String SERVICE_RPC_ADDRESS = NN_HOST + ":9292";
|
|
|
- conf.set(DFS_NAMENODE_SERVICE_RPC_ADDRESS_KEY, SERVICE_RPC_ADDRESS);
|
|
|
- nsMap = DFSUtil.getNNServiceRpcAddresses(conf);
|
|
|
- assertEquals(1, nsMap.size());
|
|
|
- address = nsMap.get(null).get(null);
|
|
|
- assertEquals(9292, address.getPort());
|
|
|
- assertEquals(NN_HOST, address.getHostName());
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void testGetNNServiceRpcAddressesForHA() throws IOException {
|
|
|
- Configuration conf = new HdfsConfiguration();
|
|
|
-
|
|
|
- final String NS = "mycluster";
|
|
|
- final String NN1_HOST = "nn1.example.com";
|
|
|
- final String NN2_HOST = "nn2.example.com";
|
|
|
- conf.set(CommonConfigurationKeys.FS_DEFAULT_NAME_KEY, "hdfs://mycluster");
|
|
|
-
|
|
|
- conf.set(DFS_NAMESERVICES, NS);
|
|
|
- conf.set(DFSUtil.addKeySuffixes(DFS_HA_NAMENODES_KEY_PREFIX, NS),
|
|
|
- "nn1,nn2");
|
|
|
- conf.set(DFSUtil.addKeySuffixes(DFS_NAMENODE_RPC_ADDRESS_KEY, NS, "nn1"),
|
|
|
- NN1_HOST + ":9820");
|
|
|
- conf.set(DFSUtil.addKeySuffixes(DFS_NAMENODE_RPC_ADDRESS_KEY, NS, "nn2"),
|
|
|
- NN2_HOST + ":9820");
|
|
|
-
|
|
|
- assertTrue(HAUtil.isHAEnabled(conf, NS));
|
|
|
-
|
|
|
- // Without Service RPC keys
|
|
|
- Map<String, Map<String, InetSocketAddress>> nsMap =
|
|
|
- DFSUtil.getNNServiceRpcAddresses(conf);
|
|
|
- assertEquals(1, nsMap.size());
|
|
|
- Map<String, InetSocketAddress> nnMap = nsMap.get(NS);
|
|
|
- assertEquals(2, nnMap.size());
|
|
|
- InetSocketAddress nn1Address = nnMap.get("nn1");
|
|
|
- assertEquals(NN1_HOST, nn1Address.getHostName());
|
|
|
- assertEquals(DFS_NAMENODE_SERVICE_RPC_PORT_DEFAULT, nn1Address.getPort());
|
|
|
- InetSocketAddress nn2Address = nnMap.get("nn2");
|
|
|
- assertEquals(NN2_HOST, nn2Address.getHostName());
|
|
|
- assertEquals(DFS_NAMENODE_SERVICE_RPC_PORT_DEFAULT, nn2Address.getPort());
|
|
|
-
|
|
|
- // With Service RPC keys
|
|
|
- final int CUSTOM_SERVICE_PORT = 9191;
|
|
|
- conf.set(DFSUtil.addKeySuffixes(DFS_NAMENODE_SERVICE_RPC_ADDRESS_KEY,
|
|
|
- NS, "nn1"), NN1_HOST + ":" + CUSTOM_SERVICE_PORT);
|
|
|
- conf.set(DFSUtil.addKeySuffixes(DFS_NAMENODE_SERVICE_RPC_ADDRESS_KEY,
|
|
|
- NS, "nn2"), NN2_HOST + ":" + CUSTOM_SERVICE_PORT);
|
|
|
- nsMap = DFSUtil.getNNServiceRpcAddresses(conf);
|
|
|
- assertEquals(1, nsMap.size());
|
|
|
- nnMap = nsMap.get(NS);
|
|
|
- assertEquals(2, nnMap.size());
|
|
|
- nn1Address = nnMap.get("nn1");
|
|
|
- assertEquals(NN1_HOST, nn1Address.getHostName());
|
|
|
- assertEquals(CUSTOM_SERVICE_PORT, nn1Address.getPort());
|
|
|
- nn2Address = nnMap.get("nn2");
|
|
|
- assertEquals(NN2_HOST, nn2Address.getHostName());
|
|
|
- assertEquals(CUSTOM_SERVICE_PORT, nn2Address.getPort());
|
|
|
- }
|
|
|
-
|
|
|
@Test
|
|
|
public void testGetNNServiceRpcAddressesForNsIds() throws IOException {
|
|
|
Configuration conf = new HdfsConfiguration();
|
|
@@ -1116,13 +1017,13 @@ public class TestDFSUtil {
|
|
|
}
|
|
|
|
|
|
Map<String, Map<String, InetSocketAddress>> nnMap = DFSUtil
|
|
|
- .getNNServiceRpcAddresses(conf);
|
|
|
+ .getNNServiceRpcAddressesForCluster(conf);
|
|
|
assertEquals(1, nnMap.size());
|
|
|
assertTrue(nnMap.containsKey("nn1"));
|
|
|
|
|
|
conf.set(DFS_INTERNAL_NAMESERVICES_KEY, "nn3");
|
|
|
try {
|
|
|
- DFSUtil.getNNServiceRpcAddresses(conf);
|
|
|
+ DFSUtil.getNNServiceRpcAddressesForCluster(conf);
|
|
|
fail("Should fail for misconfiguration");
|
|
|
} catch (IOException ignored) {
|
|
|
}
|