HDFS-16584.Record StandbyNameNode information when Balancer is running. (#4333). Contributed by JiangHua Zhu.
Signed-off-by: litao <tomleescut@gmail.com> Signed-off-by: He Xiaoqiao <hexiaoqiao@apache.org>
This commit is contained in:
parent
93a13202d7
commit
4fd4208439
|
@ -21,6 +21,7 @@ import java.io.Closeable;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
|
import java.net.InetSocketAddress;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
@ -260,13 +261,15 @@ public class NameNodeConnector implements Closeable {
|
||||||
}
|
}
|
||||||
boolean isRequestStandby = false;
|
boolean isRequestStandby = false;
|
||||||
NamenodeProtocol nnProxy = null;
|
NamenodeProtocol nnProxy = null;
|
||||||
|
InetSocketAddress standbyAddress = null;
|
||||||
try {
|
try {
|
||||||
ProxyPair proxyPair = getProxy();
|
ProxyPair proxyPair = getProxy();
|
||||||
isRequestStandby = proxyPair.isRequestStandby;
|
isRequestStandby = proxyPair.isRequestStandby;
|
||||||
ClientProtocol proxy = proxyPair.clientProtocol;
|
ClientProtocol proxy = proxyPair.clientProtocol;
|
||||||
if (isRequestStandby) {
|
if (isRequestStandby) {
|
||||||
|
standbyAddress = RPC.getServerAddress(proxy);
|
||||||
nnProxy = NameNodeProxies.createNonHAProxy(
|
nnProxy = NameNodeProxies.createNonHAProxy(
|
||||||
config, RPC.getServerAddress(proxy), NamenodeProtocol.class,
|
config, standbyAddress, NamenodeProtocol.class,
|
||||||
UserGroupInformation.getCurrentUser(), false).getProxy();
|
UserGroupInformation.getCurrentUser(), false).getProxy();
|
||||||
} else {
|
} else {
|
||||||
nnProxy = namenode;
|
nnProxy = namenode;
|
||||||
|
@ -274,7 +277,8 @@ public class NameNodeConnector implements Closeable {
|
||||||
return nnProxy.getBlocks(datanode, size, minBlockSize, timeInterval);
|
return nnProxy.getBlocks(datanode, size, minBlockSize, timeInterval);
|
||||||
} finally {
|
} finally {
|
||||||
if (isRequestStandby) {
|
if (isRequestStandby) {
|
||||||
LOG.info("Request #getBlocks to Standby NameNode success.");
|
LOG.info("Request #getBlocks to Standby NameNode success. " +
|
||||||
|
"remoteAddress: {}", standbyAddress.getHostString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -297,15 +301,19 @@ public class NameNodeConnector implements Closeable {
|
||||||
public DatanodeStorageReport[] getLiveDatanodeStorageReport()
|
public DatanodeStorageReport[] getLiveDatanodeStorageReport()
|
||||||
throws IOException {
|
throws IOException {
|
||||||
boolean isRequestStandby = false;
|
boolean isRequestStandby = false;
|
||||||
|
InetSocketAddress standbyAddress = null;
|
||||||
try {
|
try {
|
||||||
ProxyPair proxyPair = getProxy();
|
ProxyPair proxyPair = getProxy();
|
||||||
isRequestStandby = proxyPair.isRequestStandby;
|
isRequestStandby = proxyPair.isRequestStandby;
|
||||||
ClientProtocol proxy = proxyPair.clientProtocol;
|
ClientProtocol proxy = proxyPair.clientProtocol;
|
||||||
|
if (isRequestStandby) {
|
||||||
|
standbyAddress = RPC.getServerAddress(proxy);
|
||||||
|
}
|
||||||
return proxy.getDatanodeStorageReport(DatanodeReportType.LIVE);
|
return proxy.getDatanodeStorageReport(DatanodeReportType.LIVE);
|
||||||
} finally {
|
} finally {
|
||||||
if (isRequestStandby) {
|
if (isRequestStandby) {
|
||||||
LOG.info("Request #getLiveDatanodeStorageReport to Standby " +
|
LOG.info("Request #getLiveDatanodeStorageReport to Standby " +
|
||||||
"NameNode success.");
|
"NameNode success. remoteAddress: {}", standbyAddress.getHostString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -202,15 +202,19 @@ public class TestBalancerWithHANameNodes {
|
||||||
try {
|
try {
|
||||||
cluster.waitActive();
|
cluster.waitActive();
|
||||||
cluster.transitionToActive(0);
|
cluster.transitionToActive(0);
|
||||||
|
String standbyNameNode = cluster.getNameNode(1).
|
||||||
|
getNameNodeAddress().getHostString();
|
||||||
Thread.sleep(500);
|
Thread.sleep(500);
|
||||||
client = NameNodeProxies.createProxy(conf, FileSystem.getDefaultUri(conf),
|
client = NameNodeProxies.createProxy(conf, FileSystem.getDefaultUri(conf),
|
||||||
ClientProtocol.class).getProxy();
|
ClientProtocol.class).getProxy();
|
||||||
doTest(conf);
|
doTest(conf);
|
||||||
// Check getBlocks request to Standby NameNode.
|
// Check getBlocks request to Standby NameNode.
|
||||||
assertTrue(log.getOutput().contains(
|
assertTrue(log.getOutput().contains(
|
||||||
"Request #getBlocks to Standby NameNode success."));
|
"Request #getBlocks to Standby NameNode success. remoteAddress: " +
|
||||||
|
standbyNameNode));
|
||||||
assertTrue(log.getOutput().contains(
|
assertTrue(log.getOutput().contains(
|
||||||
"Request #getLiveDatanodeStorageReport to Standby NameNode success"));
|
"Request #getLiveDatanodeStorageReport to Standby NameNode success. " +
|
||||||
|
"remoteAddress: " + standbyNameNode));
|
||||||
} finally {
|
} finally {
|
||||||
cluster.shutdown();
|
cluster.shutdown();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue