基于Eclipse的Hadoop應(yīng)用開發(fā)環(huán)境的配置
配置好了Hadoop運(yùn)行環(huán)境,下一步就要配置,開發(fā)環(huán)境了。實(shí)際上開發(fā)環(huán)境很好配置,網(wǎng)上很多的帖子,都指向了IBM提供的Hadoop開發(fā)工具,這個工具很好用。大家打開這個網(wǎng)址,很容易就能Stepby step搞定,http://www.alphaworks.ibm.com/tech/mapreducetools。但是細(xì)心的讀者不難發(fā)現(xiàn),這個工具似乎是個絕版,到現(xiàn)在似乎還是停留在2007年3月23日呢,而且其支持的Eclipse也是3.3的,Hadoop更是0.17的。很多人在forum上還抱怨,安裝上這個工具后,報出錯誤:RefreshDFS Children has encountered a problem:Refreshing DFS node failed:1。呵呵,這個問題我也遇到了,我也很郁悶。我心里也在罵IBM這幫官僚如此不思進(jìn)取。
這兩天我在裝載HadoopCore的Examples測試,由于想要多了解些Hadoop,于是就打開了Hadoop的每個子目錄,在打開/hadoop-0.19.0/contrib/意外發(fā)現(xiàn)了eclipse-plugin,心里不禁竊喜,不知道是不是IBM的這個工具的升級版移到這里還是其他什么原因,工具不是在這里嗎?只不過與以前不同,是個jar包!我把hadoop-0.19.0-eclipse-plugin.jar,拷貝到eclipse-SDK-3.4-win32\eclipse\plugins下面,啟動eclipse,居然真的安裝成功了,真的是該工具的升級版,也沒有了那個錯誤!真的是很意外!界面是這樣滴,選擇Window->OpenPerspective,可見到一個窗口,里面有一個小象圖標(biāo):Map/Reduce,點(diǎn)擊它,會打開一個新的Perspective。然后點(diǎn)擊Window->ShowView,可以打開一個View,如圖1所示,
圖1
在這個View中,我們可以創(chuàng)建一個或多個Hadoop運(yùn)行環(huán)境,這個運(yùn)行環(huán)境,有點(diǎn)像,在Eclipse中配置JDBC數(shù)據(jù)庫連接一樣。如圖2,圖3所示:
圖2
圖3
配置完成以后,顯示如圖1左邊的樹形結(jié)構(gòu)一樣,這很像在Eclipse配置了,Tomcat的Server項(xiàng)目一樣。配置完成以后,顯示如圖1左邊的樹形結(jié)構(gòu)一樣,這很像在Eclipse配置了,Tomcat的Server項(xiàng)目一樣。
你點(diǎn)擊view中的小象圖標(biāo),很可能會報一個錯誤:
Cannot connect to the Map/Reduce location: hadoop@ubuntu1
java.io.IOException: Unknown protocol to name node:org.apache.hadoop.mapred.JobSubmissionProtocol
我也遇到這個問題,很讓我郁悶,我愿想是不是我的服務(wù)器哪里出了問題?后來才知道,是我的端口配置錯誤了,我在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的監(jiān)聽端口,而9001是jobtracker的監(jiān)聽端口,在圖3的界面上新建DFSlocation時候,可以看到Map/ReduceMaster,當(dāng)時我還沒弄明白,這是什么意思,現(xiàn)在才知道,這是jobtracker所在機(jī)器及監(jiān)聽端口,于是我設(shè)置成:host=ubuntu1,port=9001,而DFSMaster中勾選Use M/R MasterHost(意思是:是否使用與JobTracker相同的主機(jī)?)我的當(dāng)然是勾上。端口當(dāng)然也就是9000了,即host=ubuntu1,port=9000。
于是,連接the Map/Reducelocation就不會再出現(xiàn)錯誤了。下面的用戶是cdh,因?yàn)槲业乃械膗buntu都是cdh的用戶的。
我們可以用Web的方式來查看這個兩個端口是否工作正常,namenode的Web訪問端口是50070,由于我的namenode是建立在ubuntu1上的,因此,我要用Web方式訪問namenode,那么在瀏覽器中敲入地址:http://ubuntu1:50070,你就會看到一個頁面,如下圖4:
圖4
而9001是也是可以用Web方式來訪問的,我的namenode和jobtracker是在一臺機(jī)器上的,網(wǎng)址是http://ubuntu1:50030,如果你配置成功,可以打開如下圖5的頁面:
圖5
tasktracker可以Web方式訪問,由于我的tasktracker是建立在ubuntu2上的,因此網(wǎng)址是:http://ubuntu2:50060,如果你配置成功,可以打開如下圖6的頁面:
圖6
為了能找到本地的Hadoop安裝目錄,打開Window->Preferences->HadoopMap/Reduce,將本地的Hadoop安裝目錄添加進(jìn)來,這個安裝目錄實(shí)際上就是把hadoop-0.19.0.tar.gz用解壓工具解壓到一個目錄下面。這個目錄就是安裝目錄。我的就是F:\hadoop-0.19.0。如圖7所示:
圖7
點(diǎn)擊File->New->Other,在彈出的窗口中會有Map/Reduce項(xiàng)目,如圖8所示:
圖8
點(diǎn)擊下一步,如圖9所示,
圖9
再點(diǎn)擊下一步,如圖10所示,點(diǎn)擊Finish就成了。
圖10
右鍵點(diǎn)擊自己所創(chuàng)建的項(xiàng)目,進(jìn)入到Properties,打開界面如圖11所示,可以在Java BuildPath中,設(shè)置源代碼和Java Doc路徑,這樣,你就可以看到Hadoop的所有Core源代碼了,呵呵
圖11
右鍵點(diǎn)擊項(xiàng)目中的src,可以添加Mapper類,Reducer類,以及MapReducerDriver類,向?qū)詣訛槟闵蛇@三個類的Framework。這對于新手尤其重要。如圖12所示:
圖12
編寫完你的代碼以后,你可以點(diǎn)擊你的Driver類->Run onhadoop,來運(yùn)行你的Hadoop應(yīng)用,這個運(yùn)行是工具自動打包成jar,部署到Hadoop環(huán)境上去運(yùn)行的。呵呵,至此,開發(fā)環(huán)境就配置好了,你可以盡情地享用Hadoop帶給你的快樂了!祝大家在2009年的云計(jì)算的開發(fā)中,其樂無窮!