實戰 windows7 下 eclipse 遠程調試 linux hadoop

恩,之因此有這篇博客,是由於最近又有童鞋諮詢怎麼在 windows 7 下用eclipse遠程調試部署在linux下的hadoop,其實我本身不這麼混搭的,既然有童鞋這麼問了,那我就索性隨着折騰一把了。javascript

首先說明幾點:html

遠程調試對於本地hadoop版本、遠程hadoop版本、eclipse版本都有極爲嚴格的兼容性要求,我所採用的版本以下:java

(1)本地hadoop:0.20.203(若是客戶端和服務端hadoop版本不匹配可能會有協議錯誤)python

(2)遠程hadoop:0.20.203(由於各個版本的ipc協議都有變化)linux

下載地址:http://archive.apache.org/dist/hadoop/core/hadoop-0.20.203.0/c++

(3)eclipse版本:indigo(這個也很重要,不匹配的話,可能eclipse壓根就沒法識別hadoop插件)apache

文件md5碼以及下載地址:編程

 

9017a39354fa65375c6ee748963cf2ff  eclipse-jee-indigo-SR2-win32.zip

http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/indigosr2ubuntu

 

(4)客戶端操做系統:win7,遠程操做系統:linux(ubuntu/centos等等,只要是linux都可)windows

 

上述搭配中若是有任意一項版本不匹配,都可能有異常發生,這都不在本文的討論範疇,所以開始下文操做前,請務必覈對你本身的版本。

第一步:先啓動hadoop守護進程

具體參看:http://www.cnblogs.com/flyoung2008/archive/2011/11/29/2268302.html

第二步:在eclipse上安裝hadoop插件

1.複製 hadoop安裝目錄/contrib/eclipse-plugin/hadoop-0.20.203.0-eclipse-plugin.jar 到 eclipse安裝目錄/plugins/ 下。 

2.重啓eclipse,配置hadoop installation directory。 
若是安裝插件成功,打開Window-->Preferens,你會發現Hadoop Map/Reduce選項,在這個選項裏你須要配置Hadoop installation directory。配置完成後退出。

3.配置Map/Reduce Locations。 

在Window-->Show View中打開Map/Reduce Locations。 
在Map/Reduce Locations中新建一個Hadoop Location。在這個View中,右鍵-->New Hadoop Location。在彈出的對話框中你須要配置Location name,如Hadoop,還有Map/Reduce Master和DFS Master。這裏面的Host、Port分別爲你在mapred-site.xml、core-site.xml中配置的地址及端口。如:

Map/Reduce Master

192.168.1.101 9001

DFS Master

 

192.168.1.101 9000

配置完後退出。點擊DFS Locations-->Hadoop若是能顯示文件夾(2)說明配置正確,若是顯示"拒絕鏈接",請檢查你的配置。

若是這一步有問題,請看最後的注意事項(1)」。

第三步:新建項目。 
File-->New-->Other-->Map/Reduce Project 
項目名能夠隨便取,如WordCount。 
複製 hadoop安裝目錄/src/example/org/apache/hadoop/example/WordCount.java到剛纔新建的項目下面。 或者參考:http://my.oschina.net/leejun2005/blog/83058
第四步:上傳模擬數據文件夾。 
爲了運行程序,咱們須要一個輸入的文件夾,和輸出的文件夾。
在本地新建word.txt

 

java c++ python c
java c++ javascript 
helloworld hadoop
mapreduce java hadoop hbase

經過hadoop的命令在HDFS上建立/tmp/workcount目錄,命令以下:bin/hadoop fs -mkdir /tmp/wordcount

經過copyFromLocal命令把本地的word.txt複製到HDFS上,命令以下:bin/hadoop fs -copyFromLocal /home/grid/word.txt  /tmp/wordcount/word.txt

第五步:運行項目

1.在新建的項目Hadoop,點擊WordCount.java,右鍵-->Run As-->Run Configurations 
2.在彈出的Run Configurations對話框中,點Java Application,右鍵-->New,這時會新建一個application名爲WordCount 
3.配置運行參數,點Arguments,在Program arguments中輸入「你要傳給程序的輸入文件夾和你要求程序將計算結果保存的文件夾」,如:

 

hdfs://centos1:9000/tmp/wordcount/word.txt   hdfs://centos1:9000/tmp/wordcount/out

4.若是運行時報java.lang.OutOfMemoryError: Java heap space 配置VM arguments(在Program arguments下)

 

-Xms512m -Xmx1024m -XX:MaxPermSize=256m

關於jvm內存分配理解,請參考:http://my.oschina.net/leejun2005/blog/122963

5.點擊Run,運行程序。 
點擊Run,運行程序,過段時間將運行完成,等運行結束後,查看運行結果,使用命令: bin/hadoop fs -ls /tmp/wordcount/out查看例子的輸出結果,發現有兩個文件夾和一個文件,使用命令查看part-r-00000文件, bin/hadoop fs -cat /tmp/wordcount/out/part-r-00000能夠查看運行結果。若是這一步有問題,請看最後的「注意事項(2)」。

截圖以下:

 

注意事項:

(1)第2步eclipse可能會報沒法鏈接的錯:"Map/Reduce location status updater". org/codehaus/jackson/map/JsonMappingException

通過查詢,是因爲hadoop的eclipse 插件裏面缺乏了一些包

按照這篇文章的說明 修改包後 從新運行成功

http://hi.baidu.com/wangyucao1989/blog/item/279cef87c4b37c34c75cc315.html

關於這個eclipse插件的問題,我已經打包好了,請從以下地址下載:

http://vdisk.weibo.com/s/xEJGZ

(2)第5步,可能會報錯:

12/04/24 15:32:44 ERROR security.UserGroupInformation: PriviledgedActionException as:Administrator cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-519341271\.staging to 0700
Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-519341271\.staging to 0700
    at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:682)
這是因爲Windows下文件權限問題,在Linux下能夠正常運行,不存在這樣的問題。

參考:http://blog.csdn.net/keda8997110/article/details/8533633

解決方法是修改 F:\編程開發\hadoop\older\hadoop-0.20.203.0rc1\hadoop-0.20.203.0\src\core\org\apache\hadoop\fs\RawLocalFileSystem.java ,註釋掉 checkReturnValue(有些粗暴,在Window下,能夠不用檢查)

private void checkReturnValue(boolean rv, Path p, FsPermission permission) 
  throws IOException {
    /*if (!rv) {
      throw new IOException("Failed to set permissions of path: " + p + " to " + 
                            String.format("%04o", permission.toShort()));
    }*/
  }

而後從新編譯、打包 hadoop-core-0.20.203.0.jar ,再次運行便可成功。關於這個從新編譯hadoop的方法我上面的壓縮包裏也有教程文檔,爲了方便起見,我把已經編譯打包好的jar也上傳了,你直接替換便可。http://vdisk.weibo.com/s/xEJGZ

ok,到此你如今應該能夠在windows7下遠程調試你的hadoop代碼了,若是沒有成功,請仔細覈對各個步驟、各個配置項,Good Luck~

 

REF:

基於Eclipse的Hadoop應用開發環境配置

http://www.cnblogs.com/flyoung2008/archive/2011/12/09/2281400.html (本文參考此文)

http://blog.sina.com.cn/s/blog_62186b4601012acs.html

cygwin中安裝hadoop+eclipse編譯源碼並調試

http://dl.iteye.com/topics/download/04aca317-2d9f-3a95-90bf-ec569eb38bbc

windows上編譯eclipse-plugin for hadoop-0.20.2-cdh3u3

http://superlxw1234.iteye.com/blog/1749038

關於eclipse沒法鏈接報錯:

"Map/Reduce location status updater". org/codehaus/jackson/map/JsonMappingException

通過查詢,是因爲hadoop的eclipse 插件裏面缺乏了包

按照這篇文章的說明 修改包後 從新運行成功

http://hi.baidu.com/wangyucao1989/blog/item/279cef87c4b37c34c75cc315.html

若是已經安裝了官方插件,發現無法鏈接的,須要先從eclipse中刪除這個jar包.而後重啓eclipse,(防止緩存)

而後再放入新jar包, 再重啓eclipse.

windows下用eclipse鏈接linux中的hadoop,並執行mr

http://superlxw1234.iteye.com/blog/1583164

注意:myeclipse有2點須要注意:

 

cat eclipse.desktop # chmod 777 注意權限
[Desktop Entry]
Encoding=UTF-8
Name=Eclipse
Comment=Eclipse IDE
Exec=/home/june/soft/eclipse/eclipse
Icon=/home/june/soft/eclipse/icon.xpm
Terminal=false
StartupNotify=true
Type=Application
Categories=Application;Development;

(1)Icon=/home/june/download/myeclipse-8.4.200-linux-gtk-x86/icon.xpm  這裏不能有空格、雙引號等其它符號,空格轉義便可。

(2)hadoop的jar包直接丟到 /home/june/Genuitec/MyEclipse 8.5 M2/dropins 便可,不須要找什麼 plugins 目錄。

Hadoop學習筆記(九):如何在windows上使用eclipse遠程鏈接hadoop進行程序開發

http://www.cnblogs.com/beanmoon/archive/2013/01/05/2845579.html

Hadoop做業提交多種方案具體流程詳解 

http://weixiaolu.iteye.com/blog/1402919

Hadoop集羣(第7期)_Eclipse開發環境設置

http://www.cnblogs.com/xia520pi/archive/2012/05/20/2510723.html

相關文章
相關標籤/搜索