浏览代码

HADOOP-3065. Better logging message if the rack location of a datanode
cannot be determined. (Devaraj Das via dhruba)



git-svn-id: https://svn.apache.org/repos/asf/hadoop/core/trunk@641990 13f79535-47bb-0310-9956-ffa450edef68

Dhruba Borthakur 17 年之前
父节点
当前提交
481b97a1a7
共有 3 个文件被更改,包括 17 次插入2 次删除
  1. 3 0
      CHANGES.txt
  2. 8 1
      src/java/org/apache/hadoop/dfs/FSNamesystem.java
  3. 6 1
      src/java/org/apache/hadoop/mapred/JobTracker.java

+ 3 - 0
CHANGES.txt

@@ -392,6 +392,9 @@ Trunk (unreleased changes)
     HADOOP-2982. Fixes a problem in the way HOD looks for free nodes.
     (Hemanth Yamijala via ddas)
 
+    HADOOP-3065. Better logging message if the rack location of a datanode
+    cannot be determined.  (Devaraj Das via dhruba)
+
 Release 0.16.2 - Unreleased
 
   BUG FIXES

+ 8 - 1
src/java/org/apache/hadoop/dfs/FSNamesystem.java

@@ -1910,7 +1910,12 @@ class FSNamesystem implements FSConstants, FSNamesystemMBean {
           }
           List<String> rName = dnsToSwitchMapping.resolve(dnHosts);
           if (rName == null) {
-            continue;
+            LOG.error("The resolve call returned null! Using " + 
+                NetworkTopology.DEFAULT_RACK + " for some hosts");
+            rName = new ArrayList<String>(dnHosts.size());
+            for (int i = 0; i < dnHosts.size(); i++) {
+              rName.add(NetworkTopology.DEFAULT_RACK);
+            }
           }
           int i = 0;
           for (String m : rName) {
@@ -2689,6 +2694,8 @@ class FSNamesystem implements FSConstants, FSNamesystemMBean {
     }
     
     if (node.getNetworkLocation().equals(NetworkTopology.UNRESOLVED)) {
+      LOG.info("Ignoring block report from " + nodeID.getName() + 
+          " because rack location for this datanode is still to be resolved."); 
       return null; //drop the block report if the dn hasn't been resolved
     }
 

+ 6 - 1
src/java/org/apache/hadoop/mapred/JobTracker.java

@@ -1468,7 +1468,12 @@ public class JobTracker implements MRConstants, InterTrackerProtocol, JobSubmiss
           }
           List<String> rName = dnsToSwitchMapping.resolve(dnHosts);
           if (rName == null) {
-            continue;
+            LOG.error("The resolve call returned null! Using " + 
+                NetworkTopology.DEFAULT_RACK + " for some hosts");
+            rName = new ArrayList<String>(dnHosts.size());
+            for (int i = 0; i < dnHosts.size(); i++) {
+              rName.add(NetworkTopology.DEFAULT_RACK);
+            }
           }
           int i = 0;
           for (String m : rName) {