1. 程式人生 > >ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceID

ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceID

問題的產生: 今天遇到了一個問題 我執行了 https://blog.csdn.net/lzc4869/article/details/Hadoop namenode -format 之後 啟動hadoop: https://blog.csdn.net/lzc4869/article/details/start-all.sh 的時候 執行jps發現 datanode沒有起來 但是 TaskTracker是正常啟動的 然後我去datanode的錯誤日誌裡面發現的下面的問題: 2012-11-23 14:31:14,319 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties 2012-11-23 14:31:14,334 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered. 2012-11-23 14:31:14,335 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s). 2012-11-23 14:31:14,335 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode metrics system started 2012-11-23 14:31:14,406 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source ugi registered. 2012-11-23 14:31:14,798 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /data/hdfs/data: namenode namespaceID=971169702; datanode namespaceID=1507918015 at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:232) at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:147) at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:385) at org.apache.hadoop.hdfs.server.datanode.DataNode.(DataNode.java:299) at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1582) at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1521) at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1539) at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1665) at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.Java:1682)

/data/hdfs/data 這個目錄是我 hdfs-site.xml 配置檔案裡面 dfs.data.dir 的值: dfs.data.dir /data/hdfs/data

解決的辦法: 1.進入每個datanode的 dfs.data.dir 的 current目錄,修改裡面的檔案VERSION

namespaceID=246015542 storageID=DS-2085496284-192.168.1.244-50010-1353654017403 cTime=0 storageType=DATA_NODE layoutVersion=-32 裡面有個 namespaceID 將其修改成為報錯資訊中的 namenode namespaceID=971169702 相同的 namespaceID . 然後重新啟動 datanode全部都能正常啟動了。

2.由於是測試環境,於是產生的第一個想法是 直接刪除每個datanode 上面 dfs.data.dir目錄下所有的檔案 rm -rf * 刪除之後 重新啟動 也是可以正常的啟動所有的datanode 進到dfs.data.dir目錄下 所有的datanode又全部重新生成了。