Repository: hadoop Updated Branches: refs/heads/branch-2 d83ae68bb -> 30cb540b4
HDFS-7433. Optimize performance of DatanodeManager's node map. Contributed by Daryn Sharp. (cherry picked from commit 7a7960be41c32f20ffec9fea811878b113da62db) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/30cb540b Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/30cb540b Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/30cb540b Branch: refs/heads/branch-2 Commit: 30cb540b4dd05af15aabe28c8426a52a9ead364b Parents: d83ae68 Author: Kihwal Lee <kih...@apache.org> Authored: Fri May 8 15:20:14 2015 -0500 Committer: Kihwal Lee <kih...@apache.org> Committed: Fri May 8 15:20:14 2015 -0500 ---------------------------------------------------------------------- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++ .../server/blockmanagement/DatanodeManager.java | 16 ++++++---------- 2 files changed, 9 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/30cb540b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 787f309..e27954a 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -205,6 +205,9 @@ Release 2.8.0 - UNRELEASED HDFS-8026. Trace FSOutputSummer#writeChecksumChunks rather than DFSOutputStream#writeChunk (cmccabe) + HDFS-7433. Optimize performance of DatanodeManager's node map. + (daryn via kihwal) + BUG FIXES HDFS-8091: ACLStatus and XAttributes should be presented to http://git-wip-us.apache.org/repos/asf/hadoop/blob/30cb540b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java index 808ee75..5c3e798 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeManager.java @@ -40,7 +40,6 @@ import org.apache.hadoop.hdfs.server.namenode.NameNode; import org.apache.hadoop.hdfs.server.namenode.Namesystem; import org.apache.hadoop.hdfs.server.protocol.*; import org.apache.hadoop.hdfs.server.protocol.BlockRecoveryCommand.RecoveringBlock; -import org.apache.hadoop.hdfs.util.CyclicIteration; import org.apache.hadoop.ipc.Server; import org.apache.hadoop.net.*; import org.apache.hadoop.net.NetworkTopology.InvalidTopologyException; @@ -84,8 +83,8 @@ public class DatanodeManager { * <p> * Mapping: StorageID -> DatanodeDescriptor */ - private final NavigableMap<String, DatanodeDescriptor> datanodeMap - = new TreeMap<String, DatanodeDescriptor>(); + private final Map<String, DatanodeDescriptor> datanodeMap + = new HashMap<String, DatanodeDescriptor>(); /** Cluster network topology */ private final NetworkTopology networktopology; @@ -405,11 +404,6 @@ public class DatanodeManager { } } - CyclicIteration<String, DatanodeDescriptor> getDatanodeCyclicIteration( - final String firstkey) { - return new CyclicIteration<String, DatanodeDescriptor>( - datanodeMap, firstkey); - } /** @return the datanode descriptor for the host. */ public DatanodeDescriptor getDatanodeByHost(final String host) { @@ -526,9 +520,10 @@ public class DatanodeManager { /** Prints information about all datanodes. */ void datanodeDump(final PrintWriter out) { synchronized (datanodeMap) { + Map<String,DatanodeDescriptor> sortedDatanodeMap = + new TreeMap<String,DatanodeDescriptor>(datanodeMap); out.println("Metasave: Number of datanodes: " + datanodeMap.size()); - for(Iterator<DatanodeDescriptor> it = datanodeMap.values().iterator(); it.hasNext();) { - DatanodeDescriptor node = it.next(); + for (DatanodeDescriptor node : sortedDatanodeMap.values()) { out.println(node.dumpDatanode()); } } @@ -1288,6 +1283,7 @@ public class DatanodeManager { foundNodes.add(HostFileManager.resolvedAddressFromDatanodeID(dn)); } } + Collections.sort(nodes); if (listDeadNodes) { for (InetSocketAddress addr : includedNodes) {