Hadoop 一些錯誤解決
1. Input path does not exist:file:/路徑名
這個問題肯定是core-site.xl 配置檔案中fs.defaultFS配置項配置不正確。如果是本機執行hadoop,那麼需要修改配置檔案中此配置項為hdfs://IP:Port;如果是eclipse提交到伺服器執行,需要將自己的配置檔案add bulidpath,即配置檔案右鍵---Libraries---Add Class Folder。
問題原因
eclipse安裝完hadoop外掛後進行的配置如下。
第一步:選擇 Window 選單下的 Preference。開啟Preference,此時會彈出一個窗體,窗體的左側會多出 Hadoop Map/Reduce 選項,點選此選項,選擇 Hadoop 的安裝目錄(如/usr/local/hadoop,Ubuntu不好選擇目錄,直接輸入就行)。
第二步:切換 Map/Reduce 開發檢視,選擇 Window 選單下選擇 Open Perspective -> Other,彈出一個窗體,從中選擇 Map/Reduce 選項即可進行切換。
第三步:建立與 Hadoop 叢集的連線。點選 Eclipse軟體右下角的 Map/Reduce Locations 面板,在面板中單擊右鍵,選擇 New Hadoop Location。在彈出來的 General 選項面板中,General 的設定要與 Hadoop 的配置一致。一般兩個 Host 值是一樣的,如果是偽分散式,填寫 localhost 即可,另外我使用的
在使用 Eclipse 執行 MapReduce 程式時,會讀取 Hadoop-Eclipse-Plugin 的 Advanced parameters 作為 Hadoop 執行引數,如果我們未進行修改,則預設的引數其實就是單機(非分散式)引數,因此程式執行時是讀取本地目錄而不是 HDFS 目錄,就會提示 Input 路徑不存在。所以我們要麼修改外掛引數,要麼將配置檔案複製到專案中的 src 目錄來覆蓋引數,才能讓程式能夠正確執行。
Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException:
Input path does not exist: file:/home/hadoop/workspace/WordCountProject/input
2.java.io.IOException: There appears to be a gap in the edit log. We expected txid 1, but got txid 11
啟動namenode失敗,報錯如上。
原因:namenode元資料被破壞,需要修復
解決:恢復一下namenode
hadoop namenode -recover
一路選擇y和c,一般就OK了
此命令相當於重新format,因此也需要刪除hadoop.tmp.dir資料夾