Hadoop技術內幕:深入解析Hadoop和HDFS 1.3準備 Hadoop 原始碼

weixin_33670713發表於2018-09-25

在 Hadoop 的官方網站(http://hadoop.apache.org/)中,可以找到 Hadoop 專案相關的信

息,如圖 1-14 所示

11543726-16398581f795b119

圖 1-14 Apache Hadoop 官方網站

1.3.1 下載 Hadoop

前面在介紹 Hadoop 生態系統的時候,已經瞭解到 Hadoop 發展初期的系統中包括

Common(開始使用的名稱是 Core)、HDFS 和 MapReduce 三部分,現在這些子系統都

已 經 獨 立, 成 為 Apache 的 子 項 目。 但 在 Hadoop 1.0 的 發 行 包 中,Common、HDFS 和

MapReduce 還是打包在一起,我們只需要下載一個 hadoop-1.0.0.tar.gz 包即可。注意,

Hadoop 官方也提供 Subversion(SVN)方式的程式碼下載,SVN 地址為 http://svn.apache.org/repos/asf/hadoop/common/tags/release-0.1.0/。

熟悉 Subversion 的讀者,也可以通過該地址下載 Hadoop1.0 版本程式碼,該 Tag 也包含了

上述三部分的程式碼。

Apache 提供了大量映象網站,供大家下載它的軟體和原始碼,上面提到的 hadoop-

1.0.0.tar.gz 的 一 個 下 載 地 址 為 http://apache.etoak.com/hadoop/common/hadoop-1.0.0,

如圖 1-15 所示

11543726-875de92f5fadc325

圖 1-15 Apache Hadoop 1.0 的一個下載頁

該地址包含了 Hadoop 1.0 的多種發行方式,如 64 位系統上的 hadoop-1.0.0-1.adm64.rpm、不包含原始碼的發行包 hadoop-1.0.0.bin.tar.gz 等。下載的 hadoop-1.0.0.tar.gz 是包括原始碼的 Hadoop 發行包。

1.3.2 建立 Eclipse 專案

解壓下載的 hadoop-1.0.0.tar.gz 包,假設解壓後 Hadoop 的根目錄是 E:hadoop-1.0.0,啟動 Cygwin,進入專案的根目錄,我們開始將程式碼匯入 Eclipse。Hadoop 的 Ant 配置檔案build.xml 中提供了 eclipse 任務,該任務可以為 Hadoop 程式碼生成 Eclipse 專案檔案,免去建立 Eclipse 專案所需的大量配置工作。只需在 Cygwin 下簡單地執行“ant eclipse”命令即可,如圖 1-16 所示。

11543726-25ad9ee4b848d6c1

圖 1-16 建立 Eclipse 專案檔案

注意 該過程需要使用 UNIX 的線上編輯器 sed,所以一定要在 Cygwin 環境裡執行上述命

令,否則會出錯。

命令執行結束後,就可以在 Eclipse 中建立專案了。開啟 Eclipse 的 File → New → JavaProject,建立一個新的 Java 專案,選擇專案的位置為 Hadoop 的根目錄,即 E:hadoop-1.0.0,然後單擊“Finish”按鈕,就完成了 Eclipse 專案的建立,如圖 1-17 所示。

11543726-7a4218155ea197b1

圖 1-17 建立 Eclipse 專案

完成上述工作以後,Eclipse 提示一個錯誤 :“Unbound classpath variable: 'ANT_HOME/

lib/ant.jar' in project 'hadoop-1.0.0'”。

顯然,我們需要設定系統的 ANT_HOME 變數,讓 Eclipse 能夠找到編譯原始碼需要的

Ant 庫,選中專案,然後開啟 Eclipse 的 Project → Properties → Java Build Path,在 Libraries頁編輯(單擊“Edit”按鈕)出錯的項:ANT_HOME/lib/ant.jar,建立變數 ANT_HOME(在接下來第一個對話方塊裡單擊“Varliable”,第二個對話方塊裡單擊“New”按鈕),其值為 Ant的安裝目錄,如圖 1-18 所示。

由於本書只分析 Common 和 HDFS 兩個模組,在 Project → Properties → Java Build Path

的 Source 頁只保留兩個目錄,分別是 core 和 hdfs,如圖 1-19 所示。

完成上述操作以後,建立 Eclipse 專案的任務就完成了。

11543726-c89b553b06de7c76

圖 1-18 建立 ANT_HOME 變數

11543726-ecce7ed4f7b559c1

圖 1-19 保留 core 和 hdfs 兩個原始碼目錄

1.3.3 Hadoop 原始碼組織

開啟已經解壓的 Hadoop 1.0 原始碼,進入 src 目錄,該目錄包含了 Hadoop 中所有的代

碼,如圖 1-20 所示。

前面已經提到過,Hadoop 1.0 的發行包中,Common、HDFS 和 MapReduce 三個模組還

是打包在一起的,它們的實現分別位於 core、hdfs 和 mapred 子目錄下。原始碼目錄 src 下還有若干值得關注的子目錄,具體如下。

❑tools :包含 Hadoop 的一些實用工具的實現,如存檔檔案 har、分散式拷貝工具 distcp、MapReduce 執行情況分析工具 rumen 等。

❑benchmarks :包含對 Hadoop 進行效能測試的兩個工具 gridmix 和 gridmix2,通過這

些工具,可以測試 Hadoop 叢集的一些效能指標。

❑c++:需要提及的是 libhdfs,它通過 Java 的 C 語言庫介面,實現了一套訪問 HDFS 的 C 介面。

❑examples :為開發人員提供了一些使用 Hadoop 的例子,不過這些例子只涉MapReduce 的 API,本書中不會討論這部分內容。

❑contrib:是 contribution 的縮寫,包含大量 Hadoop 輔助模組的實現,如在亞馬遜彈性 計算雲上部署、執行 Hadoop 所需的指令碼就在 contribec2 目錄下。

❑test :包含專案的單元測試用例,在該目錄中能找到 Common、HDFS 和 MapReduce ❑

等模組的單元測試程式碼。

11543726-68c995070e2f1b40

圖 1-20 Hadoop 原始碼組織

1.4 小結

大資料以及相關的概念、技術是業界和學界最近關注的熱點內容,Hadoop 在其中扮演

了十分重要的角色。本節首先對 Hadoop 進行了簡單的介紹,展示了蓬勃發展的 Hadoop 生

態系統和 Hadoop 的簡單歷史。並在此基礎上,向讀者介紹了閱讀分析 Hadoop 所必需的開

發環境的搭建過程,包括:安裝與配置 JDK、安裝與配置 Eclipse、安裝與配置輔助工具的工

作。最後,在上述環境中,從零開始建立了一個包含 Hadoop Common 和 HDFS 的原始碼環境,

為進一步學習 Hadoop 原始碼做好準備。

這是給大家做的一個《Hadoop技術內幕》的分享,這本書是由我們的蔡斌和陳湘萍著作,大家想學Hadoop的可以在網上找這本書。

後續還會給大家上,敬請期待。

Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS為海量的資料提供了儲存,則MapReduce為海量的資料提供了計算。 Hadoop也是後面其他技術的基礎,學好了Hadoop才能更好地學好hive,hbase,spark,storm等。

【1】大家想了解Hadoop知識可以,關注我下方評論轉發後,私信“資料”。

【2】部分資料有時間限制,抓緊時間吧!

感謝大家的支援!

相關文章