搭建Hadoop的Eclipse開發環境

541732025發表於2014-09-25
經過一些列繁瑣的配置後,hadoop叢集終於可以跑起來了,wordcount例子也能正確執行,好了,我們可以進行Map-Reduce開發了。作為一個java程式設計師,最簡單的做法是:把在eclipse中寫好的mapreduce程式打成jar包,上傳至hadoop叢集上,然後啟動mapreduce任務。這麼做當然可以,可是我們不是大師,誰也不能保證自己寫的程式碼一次就能正確,我們需要反覆地測試、修改程式,這樣的話,每次修改都要重新打jar包,然後上傳至hadoop叢集,顯得相當地繁瑣!
有沒有一種辦法能讓eclipse連線hadoop叢集,使之能夠直接在eclipse上執行Map-Reduce任務?答案是肯定的,只需要一個eclipse外掛就能實現!
這個外掛hadoop自己就提供了,在hadoop_home/contrib/eclipse-plugin目錄下,你就會看到該外掛。但是該外掛的安裝不是很容易,而且還存在和eclipse版本相容問題。
下面我就hadoop-0.20.2和eclipse3.5版本說一下我的安裝過程。
首先,hadoop-0.20.2挑eclipse版本,一開始我的eclipse版本是3.6,把hadoop提供的外掛放進eclipse後,eclipse死活就是不出現hadoop視窗,後來經過不斷查閱資料與嘗試,發現eclipse3.3、3.4、3.5都可以與hadoop0.20.2外掛相容。如下圖,當你開啟eclipse-window-perferences時如果出現hadoop視窗,表示外掛已經差不多安裝成功了,為什麼是差不多?是不是有種不祥的預感?呵呵,稍後你就會明白了~




然後開啟Map/Reduce Locations(window-show view-others,輸入map),第一次可以新建一個,如下:



點右鍵可以進行編輯,如下:



主要是master的配置(M-R以及HDFS),點選Advanced parameters,這裡是一些詳細的配置,上面的引數填寫後也會反映到這裡來,需要注意以下幾個引數:
fs.defualt.name:與core-site.xml裡fs.default.name設定一致。 
mapred.job.tracker:與mapred-site.xml裡面mapred.job.tracker設定一致。 dfs.replication:與hdfs-site.xml裡面的dfs.replication一致。 hadoop.tmp.dir:與core-site.xml裡hadoop.tmp.dir設定一致。 
hadoop.job.ugi:並不是設定使用者名稱與密碼,是使用者與組名,如root,root。如果不填寫的話,會以作業系統的使用者名稱與組名登陸hadoop叢集,這一塊非常容易出錯。

好了,這些引數都配好以後,你的eclipse就可以連線hadoop叢集了,開啟Project Ecplorer,就會看到DFS locations,如下:



下面,我們就可以在eclipse上進行Map-Reduce開發了,當把程式碼寫完,右鍵選擇run on hadoop,咦,怎麼沒反應?我又重試了好幾次,確定沒反應,不是我手抖或者看錯了。
這是怎麼回事呢?這個問題當時確實卡了我很久,外掛是官方提供的,配置也正確了,都能連上HDFS了,那怎麼不能執行M-R程式碼呢?
後來在網上搜了好久的資料,發現不少人都遇到過這個問題,給出的解釋是:0.20.2版本官方提供的外掛已過時,需要下載正確的外掛,暈!(我不知道當初公司為什麼要選擇0.20.2這麼一個過度版本,想自定義一個OutputFormat都很難!)
該外掛地址:https://issues.apache.org/jira/secure/attachment/12460491/hadoop-eclipse-plugin-0.20.3-SNAPSHOT.jar
把外掛下載下來後,重新命名為hadoop-0.20.2-eclipse-plugin,重啟eclipse,再次選擇run on hadoop,終於有反應了,彈出對話方塊:



選擇之前的配置項,next。。。
本以為大功告成,沒想到,噩夢還在繼續。。。



看異常提示,貌似是命令找不到,去網上搜尋,原來是在windows下無法執行linux命令,需要在windows安裝cygwin來模擬linux環境。
遂下載、安裝、配置path,再次run on hadoop,當看到M-R作業提交執行在控制檯列印出 map 100% reduce 100%資訊時,我幾乎留下了感動的眼淚!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28912557/viewspace-1280937/,如需轉載,請註明出處,否則將追究法律責任。

相關文章