Hadoop技術內幕:深入解析Hadoop和HDFS 1.3準備 Hadoop 原始碼
在 Hadoop 的官方網站(http://hadoop.apache.org/)中,可以找到 Hadoop 專案相關的信
息,如圖 1-14 所示
圖 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 所示
圖 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 所示。
圖 1-16 建立 Eclipse 專案檔案
注意 該過程需要使用 UNIX 的線上編輯器 sed,所以一定要在 Cygwin 環境裡執行上述命
令,否則會出錯。
命令執行結束後,就可以在 Eclipse 中建立專案了。開啟 Eclipse 的 File → New → JavaProject,建立一個新的 Java 專案,選擇專案的位置為 Hadoop 的根目錄,即 E:hadoop-1.0.0,然後單擊“Finish”按鈕,就完成了 Eclipse 專案的建立,如圖 1-17 所示。
圖 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 專案的任務就完成了。
圖 1-18 建立 ANT_HOME 變數
圖 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 ❑
等模組的單元測試程式碼。
圖 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】部分資料有時間限制,抓緊時間吧!
感謝大家的支援!
相關文章
- Hadoop3.2.1 【 HDFS 】原始碼分析 : Standby Namenode解析Hadoop原始碼
- Hadoop3.2.1 【 HDFS 】原始碼分析 : Secondary Namenode解析Hadoop原始碼
- Hadoop2原始碼分析-準備篇Hadoop原始碼
- Hadoop–HDFSHadoop
- Hadoop技術內幕:深入解析YARN架構設計與實現原理 附下載地址HadoopYarn架構
- hadoop 原始碼分析HDFS架構演進Hadoop原始碼架構
- hadoop之 HDFS-Hadoop存檔Hadoop
- Hadoop HDFS(二)Hadoop
- Hadoop HDFS(一)Hadoop
- hadoop命令——hdfsHadoop
- hadoop原始碼_hdfs啟動流程_2_DataNodeHadoop原始碼
- Hadoop2原始碼分析-HDFS核心模組分析Hadoop原始碼
- hadoop: hdfs API示例HadoopAPI
- hadoop hdfs 命令使用Hadoop
- Hadoop3.2.1 【 HDFS 】原始碼分析 : DataXceiver: 讀取資料塊 解析 [二]Hadoop原始碼
- Hadoop入門(二)之 HDFS 詳細解析Hadoop
- hadoop之 解析HDFS的寫檔案流程Hadoop
- hadoop原始碼分析Hadoop原始碼
- Hadoop面試題之HDFSHadoop面試題
- Hadoop原理之——HDFS原理Hadoop
- Hadoop筆記HDFS(1)Hadoop筆記
- Hadoop筆記HDFS(2)Hadoop筆記
- 漫談Hadoop HDFS BalancerHadoop
- hadoop hdfs命令彙總Hadoop
- hadoop 2.0 hdfs HA 搭建Hadoop
- Hadoop(十)HDFS API操作HadoopAPI
- hadoop原始碼_hdfs啟動流程_3_心跳機制Hadoop原始碼
- hadoop包含哪些技術?Hadoop
- 重學hadoop技術Hadoop
- Hadoop中hdfs和Hbase Xceivers設定Hadoop
- Hadoop 學習系列(二)之 HDFS 詳細解析Hadoop
- 大資料時代之hadoop(二):hadoop指令碼解析大資料Hadoop指令碼
- Hadoop原始碼篇--Client原始碼Hadoop原始碼client
- Hadoop Shell命令 |HDFS Shell命令| HDFS 命令Hadoop
- HDFS Federation(HDFS 聯邦)(Hadoop2.3)Hadoop
- 備忘錄:hadoop技術一點積累Hadoop
- root加到hadoop的hdfs使用者組內Hadoop
- Hadoop原理與原始碼Hadoop原始碼