1. 程式人生 > >hadoop多次格式化後出現datanode無法正常啟動的解決辦法

hadoop多次格式化後出現datanode無法正常啟動的解決辦法

hadoop 多次執行命令:

hadoop namenode -format後,發現再次啟動hadoop後,datanode節點無法正常啟動,出現錯誤程式碼如下:

could only be replicated to 0 nodes, instead of 1,產生這樣的錯誤原因有多種,這裡列舉出以下四種常用的解決方法以供參考:

  • 確保master(namenode) 、slaves(datanode)的防火牆已經關閉
  • 確保DFS空間的使用情況
  • Hadoop預設的hadoop.tmp.dir的路徑為/tmp/hadoop-${user.name},而有的linux系統的/tmp目錄檔案系統的型別往往是Hadoop不支援的。
  • 先後啟動namenode、datanode
    $hadoop-daemon.sh start namenode
    $hadoop-daemon.sh start datanode
上面的方法都已經試過,但還是不能正常啟動datanode節點,所以繼續嘗試,發現還有一個問題可以考慮,當我們執行檔案系統格式化時,會在namenode資料資料夾(即配置檔案中dfs.name.dir在本地系統的路徑)中儲存一個current/VERSION檔案,記錄namespaceID,標識了所格式化的 namenode的版本。如果我們頻繁的格式化namenode,那麼datanode中儲存(即配置檔案中dfs.data.dir在本地系統的路徑)
的current/VERSION檔案只是你第一次格式化時儲存的namenode的ID,因此就會造成datanode與namenode之間的id不一致。

所以,我直接將hadoop目錄下的data1,data2,datalog1,datalog2,logs共5個資料夾全部刪除,這樣也就不用再去考慮如何使多個資料夾中的namenodeID保持一致了,然後再執行

hadoop namenode -format

之後繼續:start-all.sh

執行之後使用jps命令檢視,發現datanode節點終於正常啟動。