From 121142cf952a4f9af1eb2488fe1714b6b8e685b6 Mon Sep 17 00:00:00 2001 From: Anu Engineer Date: Thu, 9 Jun 2016 19:47:01 -0700 Subject: [PATCH] HDFS-10501. DiskBalancer: Use the default datanode port if port is not provided. Contributed by Anu Engineer. --- .../diskbalancer/command/QueryCommand.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/diskbalancer/command/QueryCommand.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/diskbalancer/command/QueryCommand.java index 36448b8ebf5..ea7dbccf5db 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/diskbalancer/command/QueryCommand.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/diskbalancer/command/QueryCommand.java @@ -22,10 +22,12 @@ import com.google.common.base.Preconditions; import org.apache.commons.cli.CommandLine; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hdfs.DFSConfigKeys; import org.apache.hadoop.hdfs.protocol.ClientDatanodeProtocol; import org.apache.hadoop.hdfs.server.datanode.DiskBalancerWorkStatus; import org.apache.hadoop.hdfs.server.diskbalancer.DiskBalancerException; import org.apache.hadoop.hdfs.tools.DiskBalancer; +import org.apache.hadoop.net.NetUtils; /** * Gets the current status of disk balancer command. @@ -55,10 +57,22 @@ public void execute(CommandLine cmd) throws Exception { verifyCommandOptions(DiskBalancer.QUERY, cmd); String nodeName = cmd.getOptionValue(DiskBalancer.QUERY); Preconditions.checkNotNull(nodeName); - ClientDatanodeProtocol dataNode = getDataNodeProxy(nodeName); + nodeName = nodeName.trim(); + String nodeAddress = nodeName; + + // if the string is not name:port format use the default port. + if(!nodeName.matches("^.*:\\d$")) { + int defaultIPC = NetUtils.createSocketAddr( + getConf().getTrimmed(DFSConfigKeys.DFS_DATANODE_IPC_ADDRESS_KEY, + DFSConfigKeys.DFS_DATANODE_IPC_ADDRESS_DEFAULT)).getPort(); + nodeAddress = nodeName + ":" + defaultIPC; + LOG.debug("Using default data node port : {}", nodeAddress); + } + + ClientDatanodeProtocol dataNode = getDataNodeProxy(nodeAddress); try { DiskBalancerWorkStatus workStatus = dataNode.queryDiskBalancerPlan(); - System.out.printf("Plan ID: %s Result: %s%n", workStatus.getPlanID(), + System.out.printf("Plan ID: %s %nResult: %s%n", workStatus.getPlanID(), workStatus.getResult().toString()); if(cmd.hasOption(DiskBalancer.VERBOSE)) {