Hadoop hdfs上傳檔案報錯解決

若塵大聖發表於2020-10-06

如果大家在安裝的時候遇到問題,或者按步驟安裝完後卻不能執行Hadoop,那麼建議仔細檢視日誌資訊,Hadoop記錄了詳盡的日誌資訊,日誌檔案儲存在logs資料夾內。

無論是啟動,還是以後會經常用到的MapReduce中的每一個job,以及HDFS等相關資訊,Hadoop均存有日誌檔案以供分析。

報錯命令:
在這裡插入圖片描述
該錯誤產生的原因:
NameNode和DataNode的namespaceID不一致,這個錯誤是很多人在安裝時會遇到的
檢視日誌資訊為:
java.io.IOException: Incompatible namespaceIDs in /root/tmp/dfs/data:
NameNode namespaceID = 1201462299; DataNode namespaceID = 389958745

hadoop 多次格式化format namenode 導致節點不能啟動解決,出現這個問題的原因是多次格式化會導致節點的clusterID不一致

解決方法:

  1. 先停止所有啟動的服務
    切換到hadoop的目錄下
cd /usr/local/Hadoop/sbin/stop-all.sh
  1. 刪除core-site.xml 檔案中配置的資料夾:注意如果叢集操作則需要在每個機器上都要進行
rm -r /usr/local/Hadoop/tmp

在這裡插入圖片描述

  1. 如果還沒有成功 還可以進入hdfs資料夾下,刪除name和data資料夾 命令和上面的一樣

在這裡插入圖片描述

  1. 重新格式化
./bin/hdfs namenode -format
  1. 啟動服務
./sbin/start-dfs.sh

在這裡插入圖片描述
下面這兩種方法在實際應用中也可能會用到。

1)重啟壞掉的DataNode或JobTracker。當Hadoop叢集的某單個節點出現問題時,一般不必重啟整個系統,只須重啟這個節點,它會自動連入整個叢集。
在壞死的節點上輸入如下命令即可:
bin/Hadoop-daemon.sh start DataNode
bin/Hadoop-daemon.sh start jobtracker

2) 動態加入DataNode或TaskTracker。這個命令允許使用者動態將某個節點加入叢集中。
bin/Hadoop-daemon.sh --config ./conf start DataNode
bin/Hadoop-daemon.sh --config ./conf start tasktracker

相關文章