Repository: hadoop Updated Branches: refs/heads/trunk 8f7c2364d -> 7a7960be4
HDFS-7433. Optimize performance of DatanodeManager's node map. Contributed by Daryn Sharp. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/7a7960be Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/7a7960be Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/7a7960be Branch: refs/heads/trunk Commit: 7a7960be41c32f20ffec9fea811878b113da62db Parents: 8f7c236 Author: Kihwal Lee <kih...@apache.org> Authored: Fri May 8 15:18:29 2015 -0500 Committer: Kihwal Lee <kih...@apache.org> Committed: Fri May 8 15:18:29 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/7a7960be/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 7e958b6..1f80a62 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -535,6 +535,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-7501. TransactionsSinceLastCheckpoint can be negative on SBNs. http://git-wip-us.apache.org/repos/asf/hadoop/blob/7a7960be/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 65c5747..7769a78 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()); } } @@ -1289,6 +1284,7 @@ public class DatanodeManager { foundNodes.add(HostFileManager.resolvedAddressFromDatanodeID(dn)); } } + Collections.sort(nodes); if (listDeadNodes) { for (InetSocketAddress addr : includedNodes) {