啓動hadoop2.7,datanode啓動失敗:Initialization failed for Block pool

實驗環境

VMware15;Ubuntu16.04;hadoop2.7

問題描述

使用命令start-dfs.sh 啓動hadoop2.7遇到datanode未啓動成功。在確保各項配置(如:java 環境變量)配置正確的情況下,我們可以通過啓動時的提示去查看日誌信息 。

  • 提示:
    啓動時會提示形如 “DBLab-XMU: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.out”,其中 DBLab-XMU 對應你的機器名,但其實啓動日誌信息是記錄在 /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.log 中,所以應該查看這個後綴爲 .log 的文件;

  • 一些建議
    每一次的啓動日誌都是追加在日誌文件之後,所以得拉到最後面看,對比下記錄的時間就知道了。一般出錯的提示在最後面,通常是寫着 Fatal、Error、Warning 或者 Java Exception 的地方。 在vim一般模式下可以通過 /去快速查找錯誤。

  • 日誌信息

在這裏插入圖片描述

問題分析

  • 出現該問題的原因

在第一次格式化dfs後,啓動並使用了hadoop,後來又重新執行了格式化命令(hdfs namenode -format),這時namenode的clusterID會重新生成,而datanode的clusterID 保持不變。

每次namenode format會重新創建一個namenodeId,而data目錄包含了上次format時的id,namenode format清空了namenode下的數據,但是沒有清空datanode下的數據,導致啓動時失敗,所要做的就是每次fotmat前,清空data下的所有目錄.

解決辦法

這裏筆者用的是法二。

法一

停掉集羣,刪除問題節點的data目錄下的所有內容。即hdfs-site.xml文件中配置的dfs.data.dir目錄(我的目錄:/usr/local/hadoop/dfs/data/current)。重新格式化namenode。

法二

先停掉集羣,然後將datanode節點目錄/dfs/data/current/VERSION中的修改爲與namenode一致即可。

其實只需要把 data/current/VERSION 中的clusterID 改爲和 name/current/VERSION中的clusterID一致。

之後我們重新啓動集羣,通過 jps命令查看:

(base) hadoop@ubuntu:/usr/local/hadoop/logs$ jps
9668 SparkSubmit
13093 Jps
12983 SecondaryNameNode
12649 NameNode
12798 DataNode

此時,我們便可在本地與hdfs文件系統進行交互了,在瀏覽器中查看:

在這裏插入圖片描述

歡迎關注我的微信公衆號,談風月之餘談技術
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章