從零教你如何獲取hadoop2.4源碼並使用eclipse關聯hadoop2.4源碼
http://www.aboutyun.com/thread-8211-1-1.html
(出處: about雲開發)php
問題導讀:
1.如何經過官網src包,獲取hadoop的所有代碼
2.經過什麼樣的操做,能夠查看hadoop某個函數或則類的實現?
3.maven的做用是什麼?
咱們若是想搞開發,研究源碼對咱們的幫助很大。不明白原理就如同黑盒子,遇到問題,咱們也摸不着思路。因此這裏交給你們
一.如何獲取源碼
二.如何關聯源碼
一.如何獲取源碼
1.下載hadoop的maven程序包
(1)官網下載
這裏咱們先從官網上下載maven包hadoop-2.4.0-src.tar.gz。
官網下載地址
對於不知道怎麼去官網下載,能夠查看:新手指導:hadoop官網介紹及如何下載hadoop(2.4)各個版本與查看hadoop API介紹
(2)網盤下載
也能夠從網盤下載:
http://pan.baidu.com/s/1kToPuGB
2.經過maven獲取源碼
獲取源碼的方式有兩種,一種是經過命令行的方式,一種是經過eclipse。這裏主要講經過命令的方式
經過命令的方式獲取源碼:
1.解壓包
解壓包的時候遇到了下面問題。不過不用管,咱們繼續往下走html
1 : 沒法建立文件:D:\hadoop2\hadoop-2.4.0-src\hadoop-yarn-project\hadoop-yarn\hadoop-yarn-server\hadoop-yarn-server-applicationhistoryservice\target\classes\org\apache\hadoop\yarn\server\applicationhistoryservice\ApplicationHistoryClientService$ApplicationHSClientProtocolHandler.class:
路徑和文件名總長度不能超過260個字符
系統找不到指定的路徑。 D:\hadoop2\hadoop-2.4.0-src.zip
2 : 沒法建立文件:D:\hadoop2\hadoop-2.4.0-src\hadoop-yarn-project\hadoop-yarn\hadoop-yarn-server\hadoop-yarn-server-applicationhistoryservice\target\classes\org\apache\hadoop\yarn\server\applicationhistoryservice\timeline\LeveldbTimelineStore$LockMap$CountingReentrantLock.class:系統找不到指定的路徑。 D:\hadoop2\hadoop-2.4.0-src.zip
3 : 沒法建立文件:D:\hadoop2\hadoop-2.4.0-src\hadoop-yarn-project\hadoop-yarn\hadoop-yarn-server\hadoop-yarn-server-applicationhistoryservice\target\test-classes\org\apache\hadoop\yarn\server\applicationhistoryservice\webapp\TestAHSWebApp$MockApplicationHistoryManagerImpl.class:系統找不到指定的路徑。 D:\hadoop2\hadoop-2.4.0-src.zip
4 : 沒法建立文件:D:\hadoop2\hadoop-2.4.0-src\hadoop-yarn-project\hadoop-yarn\hadoop-yarn-server\hadoop-yarn-server-resourcemanager\target\test-classes\org\apache\hadoop\yarn\server\resourcemanager\monitor\capacity\TestProportionalCapacityPreemptionPolicy$IsPreemptionRequestFor.class:
路徑和文件名總長度不能超過260個字符
系統找不到指定的路徑。 D:\hadoop2\hadoop-2.4.0-src.zip
5 : 沒法建立文件:D:\hadoop2\hadoop-2.4.0-src\hadoop-yarn-project\hadoop-yarn\hadoop-yarn-server\hadoop-yarn-server-resourcemanager\target\test-classes\org\apache\hadoop\yarn\server\resourcemanager\recovery\TestFSRMStateStore$TestFSRMStateStoreTester$TestFileSystemRMStore.class:系統找不到指定的路徑。 D:\hadoop2\hadoop-2.4.0-src.zip
6 : 沒法建立文件:D:\hadoop2\hadoop-2.4.0-src\hadoop-yarn-project\hadoop-yarn\hadoop-yarn-server\hadoop-yarn-server-resourcemanager\target\test-classes\org\apache\hadoop\yarn\server\resourcemanager\recovery\TestZKRMStateStore$TestZKRMStateStoreTester$TestZKRMStateStoreInternal.class:
路徑和文件名總長度不能超過260個字符
系統找不到指定的路徑。 D:\hadoop2\hadoop-2.4.0-src.zip
7 : 沒法建立文件:D:\hadoop2\hadoop-2.4.0-src\hadoop-yarn-project\hadoop-yarn\hadoop-yarn-server\hadoop-yarn-server-resourcemanager\target\test-classes\org\apache\hadoop\yarn\server\resourcemanager\recovery\TestZKRMStateStoreZKClientConnections$TestZKClient$TestForwardingWatcher.class:
路徑和文件名總長度不能超過260個字符
系統找不到指定的路徑。 D:\hadoop2\hadoop-2.4.0-src.zip
8 : 沒法建立文件:D:\hadoop2\hadoop-2.4.0-src\hadoop-yarn-project\hadoop-yarn\hadoop-yarn-server\hadoop-yarn-server-resourcemanager\target\test-classes\org\apache\hadoop\yarn\server\resourcemanager\recovery\TestZKRMStateStoreZKClientConnections$TestZKClient$TestZKRMStateStore.class:
路徑和文件名總長度不能超過260個字符
系統找不到指定的路徑。 D:\hadoop2\hadoop-2.4.0-src.zip
9 : 沒法建立文件:D:\hadoop2\hadoop-2.4.0-src\hadoop-yarn-project\hadoop-yarn\hadoop-yarn-server\hadoop-yarn-server-resourcemanager\target\test-classes\org\apache\hadoop\yarn\server\resourcemanager\rmapp\attempt\TestRMAppAttemptTransitions$TestApplicationAttemptEventDispatcher.class:
路徑和文件名總長度不能超過260個字符
系統找不到指定的路徑。 D:\hadoop2\hadoop-2.4.0-src.zip
2.經過maven獲取源碼
這裏須要說明的是,在使用maven的時候,須要先安裝jdk,protoc ,若是沒有安裝能夠參考win7如何安裝maven、安裝protoc
(1)進入hadoop-2.4.0-src\hadoop-maven-plugins,運行mvn installjava
顯示以下信息node
部分截圖以下:
(2)運行
web
這時候注意,咱們進入的是hadoop_home,我這裏是D:\hadoop2\hadoop-2.4.0-src
部分信息以下shell
這時候,咱們已經把源碼給下載下來了。這時候,咱們會看到文件會明顯增大。
<ignore_js_op>
3.關聯eclipse源碼
加入咱們如下程序
<ignore_js_op> hadoop2.2mapreduce例子.rar
以下圖示,對他們進行了打包
<ignore_js_op>
這兩個文件, MaxTemperature.zip爲mapreduce例子,mockito-core-1.8.5.jar爲mapreduce例子所引用的包
(這裏須要說明的是,mapreduce爲2.2,可是不影響關聯源碼,只是交給你們該如何關聯源碼)
咱們解壓以後,導入eclipse
(對於導入項目不熟悉,參考零基礎教你如何導入eclipse項目)
<ignore_js_op>
咱們導入以後,看到不少的紅線,這些其實都是沒有引用包,下面咱們開始解決這些語法問題。
1、解決導入jar包
(1)引入mockito-core-1.8.5.jar
(2)hadoop2.4編譯包中的jar文件,這些文件的位置以下:
hadoop_home中share\hadoop文件夾下,具體我這的位置D:\hadoop2\hadoop-2.4.0\share\hadoop
找到裏面的jar包,舉例以下:lib文件中的jar包,以及下面的jar包都添加到buildpath中。
若是對於引用包,不知道該如何添加這些jar包,參考hadoop開發方式總結及操做指導。
(注意的是,咱們這裏是引入的是編譯包,編譯的下載hadoop--642.4.0.tar.gz
連接: http://pan.baidu.com/s/1c0vPjG0 密碼:xj6l)
更多包下載能夠參考hadoop家族、strom、spark、Linux、flume等jar包、安裝包彙總下載apache
2、關聯源碼
1.咱們導入jar包以後,就沒有錯誤了,以下圖所示
2.找不到源碼
當咱們想看一個類或則函數怎麼實現的時候,經過Open Call Hierarchy,卻找不到源文件。
3.Attach Source
上面三處,咱們按照順序添加便可,咱們選定壓縮包以後,單擊肯定,ok了,咱們的工做已經完畢。
注意:對於hadoop-2.2.0-src.zip則是咱們上面經過maven下載的源碼,而後壓縮的文件,記得必定是壓縮文件zip的形式
4.驗證關聯後查看源碼
咱們再次執行上面操做,經過Open Call Hierarchy
看到下面內容
而後咱們雙擊上圖主類,即紅字部分,咱們看到下面內容:
> api
問題:
細心的同窗,這裏面咱們產生一個問題,由於咱們看到的是.class文件,而不是.java文件。那麼他會不會和咱們所看到的.java文件不同那。
實際上是同樣的,感興趣的同窗,能夠驗證一下。
下一篇:
如何經過eclipse查看、閱讀hadoop2.4源碼app