1. 程式人生 > >Hadoop Eclipse 外掛配置

Hadoop Eclipse 外掛配置

把hadoop-0.19.0-eclipse-plugin.jar,拷貝到eclipse-SDK- 3.4-win32/eclipse/plugins下面,啟動eclipse,居然真的安裝成功了,真的是該工具的升級版,也沒有了那個錯誤!真的是很意外!介面是這樣滴,選擇Window->Open Perspective,可見到一個視窗,裡面有一個小象圖示:Map/Reduce,點選它,會開啟一個新的Perspective。然後點選 Window->Show View,可以開啟一個View,如圖1所示,

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

圖1


在這個View中,我們可以建立一個或多個Hadoop執行環境,這個執行環境,有點像,在Eclipse中配置JDBC資料庫連線一樣。如圖2,圖3所示:

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

圖2

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

圖3


配置完成以後,顯示如圖1左邊的樹形結構一樣,這很像在Eclipse配置了,Tomcat的Server專案一樣。配置完成以後,顯示如圖1左邊的樹形結構一樣,這很像在Eclipse配置了,Tomcat的Server專案一樣。

你點選view中的小象圖示,很可能會報一個錯誤:
Cannot connect to the Map/Reduce location: [email protected]
java.io.IOException: Unknown protocol to name node: org.apache.hadoop.mapred.JobSubmissionProtocol
 at org.apache.hadoop.dfs.NameNode.getProtocolVersion(NameNode.java:84)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:452)
 at org.apache.hadoop.ipc.Server$Handler.run(Server.java:888)

我也遇到這個問題,很讓我鬱悶,我願想是不是我的伺服器哪裡出了問題?後來才知道,是我的埠配置錯誤了,我在hadoop-site.xml中不是配置了:

<property>
<name>fs.default.name</name>
<value>hdfs://ubuntu1:9000</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://ubuntu1:9001</value>
</property>

這兩個埠很重要,9000是namenode的監聽埠,而9001是jobtracker的監聽埠,在圖3的介面上新建DFS location時候,可以看到Map/Reduce Master,當時我還沒弄明白,這是什麼意思,現在才知道,這是jobtracker所在機器及監聽埠,於是我設定成:host=ubuntu1,port=9001,而DFS Master中勾選Use M/R Master Host(意思是:是否使用與JobTracker相同的主機?)我的當然是勾上。埠當然也就是9000了,即host=ubuntu1,port=9000。

於是,連線the Map/Reduce location就不會再出現錯誤了。下面的使用者是cdh,因為我的所有的ubuntu都是cdh的使用者的。


我們可以用Web的方式來檢視這個兩個埠是否工作正常,namenode的Web訪問埠是50070,由於我的namenode是建立在ubuntu1上的,因此,我要用Web方式訪問namenode,那麼在瀏覽器中敲入地址:http://ubuntu1:50070/,你就會看到一個頁面,如下圖4:

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

圖4

而9001是也是可以用Web方式來訪問的,我的namenode和jobtracker是在一臺機器上的,網址是http://ubuntu1:50030/,如果你配置成功,可以開啟如下圖5的頁面:

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

圖5

tasktracker可以Web方式訪問,由於我的tasktracker是建立在ubuntu2上的,因此網址是:http://ubuntu2:50060/,如果你配置成功,可以開啟如下圖6的頁面:
基於Eclipse的Hadoop應用開發環境的配置

圖6

為了能找到本地的Hadoop安裝目錄,開啟Window->Preferences->Hadoop Map/Reduce,將本地的Hadoop安裝目錄新增進來,這個安裝目錄實際上就是把hadoop-0.19.0.tar.gz用解壓工具解壓到一個目錄下面。這個目錄就是安裝目錄。我的就是F:/hadoop-0.19.0。如圖7所示:

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

圖7


點選File->New->Other,在彈出的視窗中會有Map/Reduce專案,如圖8所示:

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

圖8

點選下一步,如圖9所示,

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

圖9

再點選下一步,如圖10所示,點選Finish就成了。

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

圖10

右鍵點選自己所建立的專案,進入到Properties,開啟介面如圖11所示,可以在Java Build Path中,設定原始碼和Java Doc路徑,這樣,你就可以看到Hadoop的所有Core原始碼了,呵呵

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

圖11


右鍵點選專案中的src,可以新增Mapper類,Reducer類,以及MapReducerDriver類,嚮導會自動為你生成這三個類的Framework。這對於新手尤其重要。如圖12所示:

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

圖12


編寫完你的程式碼以後,你可以點選你的Driver類->Run on hadoop,來執行你的Hadoop應用,這個執行是工具自動打包成jar,部署到Hadoop環境上去執行的。