hadoop原始碼閱讀方法
阿新 • • 發佈:2019-02-06
下載原始碼
apache 下載地址:
hadoop 1.1.2 下載 linux 版本 .tar.gz 檔案
下載完成後,解壓,進入src繫結
建立原始碼專案
eclipse新建 web project專案 因為hadoop有用到J2EE的包,
建立java project專案只能提供J2SE的包。
建立後記得將編碼改為 UTF-8,
Java Compiler 改為1.6
匯入原始碼
在專案中建立 Source Folder 資料夾 core
將解壓後的 src\core 下的 org 複製到 eclipse的core下
將解壓後的 src\core 下的core-default.xml(配置檔案編譯後都要在class下)
複製到 eclipse專案的src下
(這一步後代碼會報錯,後續需要將jar匯入)
examples、hdfs、mapred、test、tools 同core一樣的操作
test、tools和examples 不需要複製xml配置檔案
匯入jar
右鍵專案 Builde Path 在Libraries中 選擇 Add External JARs
匯入 hadoop解壓後根目錄下所有的 jar (hadoop-core-1.1.2.jar等)
匯入 根目錄lib下所有的 jar (asm-3.2.jar等)
匯入 根目錄src\test\lib 所有 jar
至此 hadoop原始碼中的jar 就全部匯入,會發現大部分原始碼已經不再報錯,
報錯的類中提示 ...tools.ant....載入不到
匯入解壓後根目錄下lib中所有的 jar
如果你是在eclipse中建立的專案還會報錯 sun 相關包找不到,
因為eclipse中預設不使用sun等特殊的包(myeclipse沒有問題)
我們需要手動新增:
在 Builde Path 的Libraries 的JRE System。。下的Access rules 新增
閱讀原始碼方法:
看啟動指令碼 根目錄下 lib/start-all.sh
腳本里首先執行的是 config 指令碼進行環境變數配置等操作
然後是 執行 dfs和mapred
在 start-dfs.sh 中可以看到 去啟動了 dfs 守護執行緒,啟動了namenode datanode
在專案中找到NameNode(org/apache/hadoop/hdfs/server/namenode/)
建議使用 Ctrl+Shift+R 進行搜尋,這樣方便一些。
在NameNode最下面有一個main方法,以此為起點檢視hdfs的的原始碼,
可以看到方法裡面先去 createNameNode -》init等等
至於其他包原始碼閱讀同理。