在自己的虚拟机上重新编译hadoop-0.20.2-cdh3u3后启动hadoop, 发现datanode没有起来.

 
  
  1. [hadoop@localhost bin]$ hadoop dfsadmin -report 
  2. Configured Capacity: 0 (0 KB) 
  3. Present Capacity: 0 (0 KB) 
  4. DFS Remaining: 0 (0 KB) 
  5. DFS Used: 0 (0 KB) 
  6. DFS Used%: 锟? 
  7. Under replicated blocks: 0 
  8. Blocks with corrupt replicas: 0 
  9. Missing blocks: 0 
  10.  
  11. ------------------------------------------------- 
  12. Datanodes available: 0 (0 total, 0 dead) 

    转到日志目录, 查看datanode日志,发现如下异常:

 
  
  1. 2012-03-27 18:20:12,275 INFO org.apache.hadoop.security.UserGroupInformation: JAAS Configuration already set up for Hadoop, not re-installing. 2012-03-27 18:20:12,334 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /opt/hdfs1: namenode namespaceID = 2020402075; datanode namespaceID = 728558412 at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:238) at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:153) at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:410) at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:305) at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1606) at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1546) at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1564) at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1690) at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1707) 2012-03-27 18:20:12,334 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down DataNode at localhost.localdomain/127.0.0.1 ************************************************************/

    datanode下的 namespaceID  与namenode的 namespaceID  不一致导致
    看下namenode下 VERSION

 
  
  1. [hadoop@localhost current]$ pwd 
  2. /opt/tmp/hadoop-hadoop/dfs/name/current 
  3. [hadoop@localhost current]$  
  4. [hadoop@localhost current]$ cat VERSION  
  5. #Tue Mar 27 18:22:11 PDT 2012 
  6. namespaceID=2020402075 
  7. cTime=0 
  8. storageType=NAME_NODE 
  9. layoutVersion=-19 

     对比datanode下VERSION

 
  
  1. [hadoop@localhost current]$ pwd 
  2. /opt/hdfs1/current 
  3. [hadoop@localhost current]$ cat VERSION  
  4. #Tue Mar 27 18:16:39 PDT 2012 
  5. namespaceID=728558412 
  6. storageID=DS-1857008061-127.0.0.1-50010-1330145936216 
  7. cTime=0 
  8. storageType=DATA_NODE 
  9. layoutVersion=-19 

    编辑datanode下的VERSION,使 namespaceID 值与namenode下的值相同, 重新启动datanode
    验证:

 
  
  1. [hadoop@localhost bin]$ hadoop dfsadmin -report 
  2. Configured Capacity: 366965649408 (341.76 GB) 
  3. Present Capacity: 334563717120 (311.59 GB) 
  4. DFS Remaining: 334563618816 (311.59 GB) 
  5. DFS Used: 98304 (96 KB) 
  6. DFS Used%: 0% 
  7. Under replicated blocks: 0 
  8. Blocks with corrupt replicas: 0 
  9. Missing blocks: 0 
  10.  
  11. ------------------------------------------------- 
  12. Datanodes available: 1 (1 total, 0 dead) 
  13.  
  14. Name: 192.168.189.128:50010 
  15. Decommission Status : Normal 
  16. Configured Capacity: 366965649408 (341.76 GB) 
  17. DFS Used: 98304 (96 KB) 
  18. Non DFS Used: 32401932288 (30.18 GB) 
  19. DFS Remaining: 334563618816(311.59 GB) 
  20. DFS Used%: 0% 
  21. DFS Remaining%: 91.17% 
  22. Last contact: Tue Mar 27 18:25:11 PDT 2012 

    可以看到,datanode已经起来!