1. 程式人生 > >在Eclipse下配置執行hadoop

在Eclipse下配置執行hadoop

非常感謝此文對我提供的幫助。

自己亂搞,出了點問題,弄來弄去,總算弄OK了

主要就是版本的問題

我的開發環境是:

Ubuntu,如果安裝的版本低,系統更新下

1.安裝eclipse

版本是eclipse3.3.X

其他版本會不相容

下好eclipse-java-3.3-linux.tar.gz檔案後

sudo cp **.tar.gz /usr/lib

解壓縮sudo -xvf ****.tar.gz

2.獲取mapreduce tool plugin

hadoop用0.20.2,注意0.20.1中沒有eclipse-hadoop的plugin,

也不要去IBM的官網去下,因為IBM已經把這個工具貢獻給hadoop了,IBM官網的那個可能會出版本不相容的問題

3. 將 hadoop 資料夾下的 contrib/eclipse-plugin/hadoop-*-eclipse-
plugin.jar 拷貝到 eclipse 資料夾下的/plugins 資料夾裡
4. 在/home/YourName/testin 下新建 2 個文字檔案,裡面各輸入若干單詞
5. 啟動 Eclipse

6. 到‘Windows’ -> ‘Preference’ -> 'Hadoop Map/Reduce',配置Hadoop Installation Directory,本例為/usr/local/hadoop


7. 在'Windows' -> 'Open Perspective' -> 'Other'裡,選擇藍大象'Map/Reduce'


8. 在'Windows' -> 'Show View' -> 'Other'裡,選擇'MapReduce Tool' -> 'Map/Reduce Location'

9. 在視窗下方出現的黃大象'Map/Reduce Location'空白處,右擊選擇'New Map/Reduce Location'


10. 在彈出來的對話方塊裡,根據core-site.xml 和 mapred-site.xml裡的埠,進行填寫:
    其中Location name 任意


11. 在視窗左側試圖的'Project Explorer'裡,點選'DFS Location',就會出現HDFS的目錄級

12、到這裡配置完成了。值得說明的是,JDK需要採用1.6,否則會報如下錯誤資訊。
Unsupported major.minor version 50.0 
Unsupported major.minor version 49.0 

Unsupported major.minor version 48.0

讓你的map reduce程式直接在eclipse執行,而不需要打成jar包放到/hadoop/bin下手動在控制檯run的方法

1. 在你建的mapreduce專案的類上,右鍵 -> Run As -> Open Run Dialog...

2. 在彈出的對話方塊中,點選 Java Application -> 類名 -> Arguments,如下圖所示

           在Arguments裡填上輸入路徑(即待處理檔案存放目錄)和輸出路徑(即處理結果存放目錄),在這裡這兩個目錄都是HDFS的路徑,不是本地目錄,中間用空格隔開即可。其中的hdfs://localhost:54310  是你在core-site.xml配置檔案的裡定義的fs.default.name的值。

           另外,/user/MR 目錄需要你手工建立(在把本地待處理檔案拷貝到HDFS時建立的),/user/MRout不用事先建立,HDFS會為你自動建立此目錄。

3. 現在在你寫的mapreduce 類裡,就想平時寫的java程式一樣,點選Run,即可在Console裡出現跟在控制檯裡手動run一樣的輸出。如下圖所示:

4. 這時,如下圖所示,重新整理 "user" 資料夾就會出現第2步定義的MRout資料夾,裡面的part-r-00000就是mapreduce的處理結果,雙擊此檔案即可開啟,檢視結果。

PS:

當你下次再執行程式時,會報錯說 /user/MRout 目錄已存在,那麼解決方法也很簡單,要麼在步驟4裡把MRout目錄,右擊選擇"Delete";要麼在步驟2裡改輸出路徑,當然了,還是前者方便些。

使用說明:
1、檢視檔案系統。點選eclipse右上角的藍色大象圖示,然後在左邊Project Explorer會出現DFS Locations的連結,開啟就能看到HDFS的文件結構。
2、執行Job,執行的時候採用Run on hadoop。這裡需要注意3點,
A、記得配置輸入輸出引數。
B、記得在main函式中新增conf.set("hadoop.job.ugi", "root,hadoop"); root是使用者名稱,hadoop是密碼。
C、工程需要載入hadoop下lib裡的所有包以及hadoop目錄下的包,當然不是全部都需要,我覺得麻煩,所以全部加上了。