1.安裝插件
準備程序:
eclipse-3.7
hadoop-eclipse-plugin-1.0.1
(http://download.csdn.net/detail/xiaoping8411/4216102)
將hadoop-eclipse-plugin-1.0.1複製到eclipse/plugins目錄下,重啓eclipse。
2.打開MapReduce視圖
Window -> Open Perspective -> Other 選擇Map/Reduce,圖標是個藍色的象。
3.添加一個MapReduce環境
在eclipse下端,控制檯旁邊會多一個Tab,叫“Map/Reduce Locations”,在下面空白的地方點右鍵,選擇“New Hadoop location...”,如圖所示:
在彈出的對話框中填寫如下內容:
Location name(取個名字)
Map/Reduce Master(Job Tracker的IP和端口,根據mapred-site.xml中配置的mapred.job.tracker來填寫)
DFS Master(Name Node的IP和端口,根據core-site.xml中配置的fs.default.name來填寫)
User name: 用戶名(默認操作系統用戶名,這個沒什麼用)
4.使用eclipse對HDFS內容進行修改
經過上一步驟,左側“Project Explorer”中應該會出現配置好的HDFS,點擊右鍵,可以進行新建文件夾、刪除文件夾、上傳文件、下載文件、刪除文件等操作。
注意:每一次操作完在eclipse中不能馬上顯示變化,必須得刷新一下。
5.創建MapReduce工程
5.1配置Hadoop路徑
Window -> Preferences 選擇 “Hadoop Map/Reduce”,點擊“Browse...”選擇Hadoop文件夾的路徑。
這個步驟與運行環境無關,只是在新建工程的時候能將hadoop根目錄和lib目錄下的所有jar包自動導入。
5.2創建工程
File -> New -> Project 選擇“Map/Reduce Project”,然後輸入項目名稱,創建項目。插件會自動把hadoop根目錄和lib目錄下的所有jar包導入。
5.3創建Mapper或者Reducer
File -> New -> Mapper 創建Mapper,自動繼承mapred包裏面的MapReduceBase並實現Mapper接口。
注意:這個插件自動繼承的是mapred包裏舊版的類和接口,新版的Mapper得自己寫。
Reducer同理。
6.在eclipse中運行WordCount程序
6.1導入WordCount
從hadoop自帶的hadoop-examples-1.0.1.jar中獲取WordCount程序
6.2配置運行參數
Run As -> Open Run Dialog... 選擇WordCount程序,在Arguments中配置運行參數:/mapreduce/wordcount/input /mapreduce/wordcount/output/1
分別表示HDFS下的輸入目錄和輸出目錄,其中輸入目錄中有幾個文本文件,輸出目錄必須不存在。
6.3運行
Run As -> Run on Hadoop 選擇之前配置好的MapReduce運行環境,點擊“Finish”運行。
控制檯會輸出相關的運行信息。
6.4查看運行結果
在輸出目錄/mapreduce/wordcount/output/1中,可以看見WordCount程序的輸出文件。除此之外,還可以看見一個logs文件夾,裏面會有運行的日誌。
7 常見問題:
7.1 目錄權限認證問題,問題如下:
12/04/11 11:41:46 ERROR security.UserGroupInformation: PriviledgedActionExceptionas:lzpcause:java.io.IOException: Failed to set permissions of path: \app\hadoop\hadoop-1.0.1\hadoopdata\mapred\staging\lzp1107758487\.staging to 0700
Exception in thread "main" java.io.IOException: Failed to set permissions of path: \app\hadoop\hadoop-1.0.1\hadoopdata\mapred\staging\lzp1107758487\.staging to 0700
at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:682)
at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:655)
解決方法:
這個問題用該是windows這邊的問題,其中\app\hadoop\hadoop-1.0.1\hadoopdata\mapred\staging\lzp11是windows7磁盤上的一個目錄
網上查到這是由於0.20.203.0以後的版本的權限認證引起的,只有去掉纔行
修改hadoop源代碼,去除權限認證,修改FileUtil.java的checkReturnValue方法,如下:
private static void checkReturnValue(boolean rv, File p,
FsPermission permission
) throws IOException {
// if (!rv) {
// throw new IOException("Failed to set permissions of path: " + p +
// " to " +
// String.format("%04o", permission.toShort()));
// }
}