花了好幾天,搭建好windows和linux下連接HDP集羣的調試環境,在此記錄一下
hadoop2.2.0的版本比hadoop0.x和hadoop1.x結構變化很大,沒有eclipse-hadoop插件支持,在網上找了好久才找到,自己編譯的比較麻煩,而且不成功,還好最後找到了。
環境及配置:
1.eclipse版本及hadoop插件下載地址:http://download.csdn.net/detail/kangdakangdaa/7880519
如果要用myeclipse開發方便的朋友,採用myeclipse8.6版本,至少我試過8.5版本是不行,不能識別插件
myeclipse8.6下載地址:http://download.csdn.net/detail/lgscofield/4471379
2.爲了windows解析域名方便,修改C:\Windows\System32\drivers\etc\hosts文件
編輯添加hadoop集羣配置的hosts文件添加進去,如:
192.168.0.128 hadoop1
也可以不添加修改,可以直接用hadoop集羣的ip用作遠程訪問。
我們先來說在linux怎麼連接hadoop集羣,在windows用eclipse和myeclipse遠程連接hadoop集羣在文章的末尾有說明
安裝配置:
1.下載eclipse,直接解壓,無配置安裝, 將插件hadoop-eclipse-plugin-2.2.0.jar放在eclipse/plugins目錄下.
2.運行eclipse.exe
在eclipse可視窗口,windows——>show view——Other——>MapReduce Tools——>mapreduce locations.
在界面上顯示的Mapreduce Locations下方,右鍵點擊New Mapreduce Locations:
配置如下:
說明:
提示:Location name:隨便取個名字,如ccbhadoop
Map/Reduce(V2) Master:根據hdfs的config(可從Ambari的配置界面上查找)中配置dfs.datanode.ipc.address的值填寫。
DFS Master:Namenode的IP和端口,根據core-site.xml中的配置fs.defaultFS的值填寫。這個配置非常重要。
配置成功後可以看到Package Explorer一欄以下信息:
如果打開eclipse時看不到這一欄,可打開Window——》Open Perspective——》Other——》Map/Reduce.如果沒有這一項,說明插件未被正確識別。
3. 打開window——preferences對話框,搜索hadoop,找到“Hadoop Map/Reduce”項,點擊Browse...配置hadoop源的路徑,也可以將hadoop-2.2.0.2.1.0.0-92複製到其他目錄下,但是要在該目錄下有lib目錄,這樣新建hadoop工程時就能自動加載該目錄下所有的jar包。
4. 新建mapreduce工程:
File——》Project——》Map/Reduce Project——》finish
打開工程,可以看到配置路徑的jar包已經導入進來:
添加WordCount.java,運行:如果不需要加參數,可直接Run
如需要配置參數,如輸入路徑輸出路徑:
右鍵——Run as——Run Configurations:
再Run.在console窗口查看是否運行成功。
可以看到DFS Locations的文件與輸入輸出路徑是對應的
提示:在DFS Locations上顯示的文件可以直接右鍵添加/刪除,然後在相應的文件下,右鍵刷新Refresh。
Windows下遠程連接linux下hadoop集羣
注意:步驟與以上基本一致,爲了保證網絡暢通,需要主機與Namenode相互之間能ping通即可,(不需要ssh,也不需要安裝unix虛擬環境cygwin)。
Myeclipse8.6版本能連接成功,試過8.5的不能正確識別插件。
將hadoop-eclipse-plugin-2.2.0.jar重命名爲hadoop-myeclipse-2.2.0-plugin.jar,放置在myeclipse8.6/dropins目錄下。然後配置過程與以上第2步完全一致。
疑問說明:
1.windows遠程連接hadoop集羣需要安裝Cygwin?
網上有很多文章都說通過Cygwin來連接hadoop的,但是我認爲hadoop本來是在linux下安裝使用的,在windows下安裝Cygwin來安裝hadoop是爲了模擬linux的環境,能夠使用linux下的命令腳本,所以最好在linux下環境下安裝學習,我就是在VM虛擬機安裝了僞分佈式的hadoop,先實現與windows的通信(也就是相互ping通),然後在windows下通過myeclipse來開發調試程序,與上面的效果是一致的。