1.概述
在完成分析Hadoop2原始碼的準備工作後,我們進入到後續的原始碼學習階段。本篇部落格給大家分享,讓大家對Hadoop V2有個初步認識,部落格的目錄內容如下所示:
- Hadoop的淵源
- Hadoop V2部分專案圖
- 各個包的功能介紹
本篇文章的原始碼是基於Hadoop-2.6.0來分析,其他版本的Hadoop的原始碼可以此作為參考分析。
2.Hadoop的淵源
其實,早年Google的核心競爭力是它的計算平臺,Google對外公佈的論文有一下內容:
- GoogleCluster
- Chubby
- GFS
- BigTable
-
MapReduce
可見MapReduce並不是Hadoop所獨有的功能,之後Apache基金會得到類似的專案,這些專案有隸屬於Hadoop專案,分別是:
- ZooKeeper(Chubby)
- HDFS(GFS)
- HBase(BigTable)
- MapReduce(Hadoop 這裡是HDFS和MapReduce的統稱)
類似於這種思想的開源專案還有很多,如:Yahoo用Pig來處理巨大資料,Facebook用Hive來進行使用者行為分析等。Hadoop的兩大核心功能分別為HDFS和MapReduce,MapReduce是一個適合做離線計算的框架,它依賴於HDFS,HDFS作為一個分散式檔案儲存系統,是所有這些專案的基礎支撐。下圖為HDFS的支撐圖,如下圖所示:
3.Hadoop V2部分專案圖
Hadoop包與包之間依賴的關係較為複雜,究其原因為HDFS提供了一個分散式檔案儲存系統,該系統提供龐大的API,使得分散式檔案系統底層的實現,依賴於某些高層的功能,這些功能互相引用,形成網狀的依賴關係。舉個例子,如conf包,它用於讀取系統配置檔案,依賴於fs包,主要是讀取相應的配置檔案時,需要使用到檔案系統,而部分檔案系統的功能都被抽象在fs包中。下圖時Hadoop V2專案的核心部分依賴包,如下圖所示:
後面的章節,主要給大家分享以下幾個部分,如:mapreduce,fs,hdfs,ipc,io,yarn。
4.各個包的功能介紹
下面對上圖列出來的各個包做下介紹說明,各個包的功能如下所示:
- tools:提供命令列工具,如DistCp,archive等等。
- mapreduce v2:Hadoop V2版本對Map/Reduce的實現。
- filecache:讓HDFS擁有本地快取,以便加快MR的資料訪問速度。
- hdfs v2:Hadoop V2的分散式檔案系統實現。
- fs:檔案系統的抽象包,為支援多種檔案系統(有可能還有其他的檔案系統)規範統一的檔案訪問介面。
- ipc:依賴 io 提供的編碼和解碼功能。
- io:編碼和解碼資料,以便在網路中傳輸。
- net:對網路功能進行封裝,如Socket。
- conf:配置系統的引數。
- util:工具類。
- ha:配置高可用的叢集,使叢集擁有兩個NameNode(active和standby)。
- yarn:Hadoop V2 版本新新增的特性,用於資源排程和管理。
5.總結
Hadoop V2在底層設計上對比Hadoop V1是有區別的,新增HA,使得Hadoop V1中存在的單點問題得到了很好得解決;Hadoop V2新增Yarn系統,使得叢集得資源管理和排程更加得完美,大大減少ResourceManager的資源消耗,並且讓監測每一個 Job 子任務 (tasks) 狀態的程式分散式化了,更安全、更優美。同時,使得多種計算框架可以執行在一個叢集中。
6.結束語
這篇文章就和大家分享到這裡,如果大家在研究和學習的過程中有什麼疑問,可以加群進行討論或傳送郵件給我,我會盡我所能為您解答,與君共勉!