1.環境的的基本介紹
- Hadoop版本: hadoop-2.7.2
- 系統版本:Centos
2.問題描述
按照正常的流程,先格式化文件系統(hadoop namenode -format),然後輸入命令 sbin/start-dfs.sh ,會出現DataNode無法啓動 ,而NameNode正常啓動,如下圖所示:
3.問題分析與解決
要分析問題,首先要從日誌文件開始分析,輸入以下命令查看日誌文件:
cd logs/
cat hadoop-root-datanode-hadoop102.log #注意查看.log的文件,這是相關日誌,而不是看.out文件
根據標註部分可以看出,Datanode的clusterID 和 Namenode的clusterID 不匹配,所以報錯了,導致DataNode啓動後再次掛掉。要解決該問題,先執行下面指令,然後重新格式化即刻生效!
rm -rf data/tmp/dfs/data/current/VERSION #集羣中每個datanode節點的/dfs/data/current中的VERSION刪除
問題分析:當我們執行文件系統格式化時,會在namenode數據文件夾,即配置文件中dfs.name.dir在本地系統的路徑,中保存一個current/VERSION文件,記錄namespaceID,標誌了所有格式化的namenode版本。如果我們頻繁的格式化namenode,那麼datanode中保存(即dfs.data.dir在本地系統的路徑)的current/VERSION文件只是你地第一次格式化時保存的namenode的ID,因此就會造成namenode和datanode之間的ID不一致。
溫馨提示:格式化要慎重!!!!!
4.NameNode格式化需要注意的幾個問題
- 重新格式化意味着集羣的數據會被全部刪除,格式化前需考慮數據備份或轉移問題
- 先刪除主節點(即namenode節點),Hadoop的臨時存儲目錄tmp、namenode存儲永久性元數據目錄dfs/name、Hadoop系統日誌文件目錄log 中的內容 (注意是刪除目錄下的內容不是目錄)
- 刪除所有數據節點(即datanode節點) ,Hadoop的臨時存儲目錄tmp、namenode存儲永久性元數據目錄dfs/name、Hadoop系統日誌文件目錄log 中的內容
- 格式化一個新的分佈式文件系統
5.寫在最後
本文是題主遇到該問題時,在網上收集了各種資料後,解決了該問題,覺得收穫頗多。故再次將其展示與博客,希望能和大家共勉,一起去貢獻出更精彩的博客!
題主只是一個入門的小學生,希望大家多多指教!如果該帖子確實能解決您的問題,望多多留言,謝謝!