天天看點

Hadoop 2.7.2 HA datanode 啟動失敗處理

剛配置的Hadoop + Zookeeper的雙NameNode的HA。Active、standby都正常,journalnodes、datanodes這些都正常。

一時手癢,非要重新來一次。好了,按照原來步驟操作,zkfc沒事,namenode沒事,journalnodes沒事,但是datanode死活就是出不來了。頁面裡顯示“live no1de”和“dead node”都是 0 。

進datanode執行 sbin/hadoop-daemon.sh start datanode也不報錯,說是寫到某個out3檔案,檢視也沒發現錯誤。

繼續查日志,找到datanode-log,發現如下錯誤資訊:

org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to test-datanode-1/10.11.22.33:9000. Exiting
           

在往上一點點,發現另一條線索:

Incompatible clusterIDs in /data/hadoop-2.7.2/hdfs/data: namenode clusterID = CID-db8e18c0-800f-4f1d-8573-0358a72b0484; datanode clusterID = CID-2cd17333-42ea-4354-a788-8765a154803b
           

clusterID不比對造成的。

原因:

當時“再來一次”,又重新執行了格式化指令(hdfs namenode -format),這時namenode的clusterID會重新生成,而datanode的clusterID 保持不變。

是以,解決辦法也很簡單了,把name/current/VERSION裡面的clusterID複制下來,依次替換data/current/VERSION裡的clusterID,再執行:

sbin/hadoop-daemon.sh start datanode
           

就可以了。

繼續閱讀