虛擬機叢集環境中,因關閉 DataNode/NameNode 順序不當,導致再次啟動時 DataNode 無法加入叢集。此類問題常發生於「首次啟動正常,後續異常關機導致的二次啟動失敗」場景。
DataNode 與 NameNode 的 VERSION 檔案中 namespaceID 不一致。namespaceID 在執行 hdfs namenode -format 時生成,若 NameNode 重新格式化而 DataNode 未清理舊資料,即會產生 ID 不匹配。
cd $HADOOP_HOME/sbin
sh stop-dfs.sh
sh stop-yarn.sh$HADOOP_HOME/data/current(或設定的 dfs.data.dir),刪除所有檔案,包含 VERSION、in_use.lock 等。hdfs namenode -formatsh start-dfs.sh
sh start-yarn.shstart-mapred.sh)jps 確認各節點進程正常,Web UI 檢查 DataNode 狀態為 Live。「當出錯時,清除一切干擾判斷的動態檔案,重新開始,遠比在原地嘗試修補要有效。」
Hadoop 運行時產生的中繼資料(VERSION、edits、fsimage 等)皆為動態生成,刪除後服務啟動會自動重建。配合虛擬機快照,風險可控。