問題描述:今天在master節點上啓動HDFS,經過JPS查看NameNode,SecondaryNameNode等都正常啓動,在slave節點上查看沒有DataNode節點,經過http://localhost:50070查看沒有DataNode節點.java
分析緣由:不管是NameNode、DataNode,在啓動時都會在$HADOOP_HOME/logs下建立一份日誌,而且將啓動的過程、異常錯誤等都會進行記錄,打開DataNode節點上產生的log,果真發現出現錯誤,錯誤以下:node
2015-05-30 19:04:10,948 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to hadoop.master/192.168.1.200:9000. Exiting. java.io.IOException: Incompatible clusterIDs in /root/app/hadoop/tmp/dfs/data: namenode clusterID = CID-aee19086-0039-4a5c-a7de-cb5f4355262c; datanode clusterID = CID-8fab07df-65df-48a0-862c-b3489783618d at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:477) at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:226) at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:254) at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:974) at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:945) at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:278) at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:220) at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:816) at java.lang.Thread.run(Thread.java:745)
主要錯誤看:apache
mp/dfs/data: namenode clusterID = CID-aee19086-0039-4a5c-a7de-cb5f4355262c; datanode clusterID = CID-8fab07df-65df-48a0-862c-b3489783618d at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:477)
DataNode clusterID與NameNode clusterID 不一致app
解決方法:oop
一、經過查看NameNode的clusterID:$HADOOP_HOME/tmp/dfs/name/current/VERSION,對比DataNode CID是否不一致
ui
二、若是不一致則將DataNode節點上的tmp文件刪除,而後從新經過sbin/hadoop-daemon.sh datanode start啓動DataNode.,如何配置無誤,NameNode會從新在DataNode上創建tmp文件而且歸入集羣中,此處產生兩種狀況:spa
2.一、生產中出現新增從節點,經過複製主節點的配置環境,而後直接刪除tmp便可加入集羣日誌
2.二、生產中出現子節點掛了,切記不能直接去hadoop namenode -format(有同窗當初由於這個問題差點就幹了),直接將掛了的子節點替換或者從新啓動,此時須要將tmp文件刪除,有些同窗顧慮刪除子節點的tmp文件會致使文件損壞或者找不到,這個不要緊,由於數據有多個備份,因此無需擔憂
code