Hadoop

Hadoop DataNode 給了我一個不兼容的命名空間 ID

  • July 10, 2012

當我從我的主節點執行 start-all.sh 腳本時,我的一些 DataNode 無法啟動;日誌文件報告 Java IOException: Incompatible Namespace IDs in /tmp/$MY_USER_NAME。

當 NameNode 被格式化時,會生成一個命名空間 ID,它本質上標識了分佈式文件系統的特定實例。當 DataNode 首次連接到 NameNode 時,它們會將該命名空間 ID 與數據塊一起儲存,因為這些塊必須屬於特定的文件系統。

如果DataNode後來連接到NameNode,而NameNode聲明的namespace ID與DataNode上儲存的namespace ID不匹配,則會拒絕操作,報“incompatible namespace ID”錯誤。這意味著 DataNode 已連接到不同的 NameNode,並且它儲存的塊不屬於該分佈式文件系統。

這通常意味著您以某種方式放錯了 NameNode 元數據。如果您有多個 HDFS 安裝,您的 DataNode 可能連接到錯誤的 NameNode。如果你只有一個安裝,那麼你的 NameNode 要麼在不同的元數據目錄下執行,要麼你以某種方式失去了元數據並從一個新格式化的文件系統開始(這只能通過執行來發生hadoop namenode -format)。嘗試找到正確的 NameNode 元數據或從備份中恢復它。

引用自:https://serverfault.com/questions/403150