任務目的
- 重點掌握Hadoop的核心組件
- 瞭解Hadoop的發展歷史及其生態體系
- 熟記Hadoop的主要特性
任務清單
- 任務1:Hadoop簡介
- 任務2:Hadoop產生背景
- 任務3:Hadoop特性
任務1:Hadoop簡介
1. Hadoop 是 Apache 軟件基金會旗下的一個開源的分佈式計算平臺。
2. Hadoop 提供的功能:利用服務器集羣,根據用戶的自定義業務邏輯,對海量數據進行分佈式處理;
“處理”什麼問題?
海量數據的存儲和海量數據的分析計算問題。也就是 Hadoop 的兩大核心:HDFS 和 MapReduce。
3. Hadoop 的核心組件有:
- Common(基礎組件):(工具包, RPC 框架) JNDI 和 RPC
- HDFS(Hadoop Distributed File System 分佈式文件系統) :HDFS是以分佈式進行存儲的文件系統,主要負責集羣數據的存儲與讀取。
- MapReduce(Map 和 Reduce 分佈式運算編程框架) :MapReduce是一種計算模型,用於大規模數據集(大於1TB)的並行計算。“Map”對數據集上的獨立元素進行指定的操作,生成鍵值對形式中間結果;“Reduce”則對之間結果中相同“鍵”的所有“值”進行規約,以得到最終結果。
- YARN(Yet Another Resources N 運算資源調度系統):Hadoop2.X中的資源管理器,它可以爲上層應用提供統一的資源管理和調度,它的引入爲集羣在利用率、資源統一管理和數據共享等方面帶來了巨大好處。
由圖可以看出,Hadoop1.X內核主要由分佈式存儲系統(HDFS)和分佈式計算框架(MapReduce)兩個系統組成,而Hadoop2.X主要新增了資源管理框架YARN。
Hadoop 1.X 生態幾乎是以 MapReduce 爲核心的,但是慢慢的發展,其擴展性差、資源利用率低、可靠性 等問題都越來越讓人覺得不爽,於是才產生了 YARN,並且 Hadoop 2.X 生態都是以 YARN 爲核心。
4. 廣義上來說, Hadoop 通常是指一個更廣泛的概念 —— Hadoop 生態圈。
經過多年的發展,Hadoop生態圈不斷完善和成熟,目前已經包含了多個子項目。除了核心的HDFS和MapReduce以外,Hadoop生態圈還包括Hive、ZooKeeper、HBase、Sqoop、Flume等功能組件。
Hadoop生態圈中的大部分組件的LOGO選用了動物圖形,因此Hadoop的生態系統就像是一羣動物在狂歡。
任務2:Hadoop產生背景
Hadoop是由Apache Lucence創始人Doug Cutting創建的,Lucence是一個應用廣泛的文本搜索系統庫。
Hadoop的發展歷程如下圖所示:
Hadoop源自2002年的Apache Nutch項目——一個開源的網絡搜索引擎並且也是Lucence項目的一部分。在2002年的時候,Nutch項目遇到了棘手的難題,該搜索引擎框架無法擴展到擁有數十億網頁的網絡。
在 2003年和2004年, Googles 分別公佈了 GFS 和 Mapreduce 兩篇論文。 Doug Cutting 和 Mike Cafarella 發現這與他們的想法不盡相同,且更加完美,完全脫離了人工運維的狀態,實現了自動化。
在經過一系列周密考慮和詳細總結後,2006 年, Dog Cutting 放奔創業,隨後幾經周折加入了 yahoo 公司(Nutch 的部分也被正式引入),機綠巧合下,他以自己兒子的一個玩具大象的名字 Hadoop 命名了該項。當系統進入 Yahoo 以後,項目逐漸發展併成熟了起來。首先是集羣規模,從最開始幾十臺機器的規模發展到能支持上千個節點的機器,中間做了很多工程性質的工作;然後是除搜索以外的業務開發, Yahoo 逐步將自己廣告系統的數據挖掘相關工作也遷移到了 Hadoop 上,使 Hadoop 系統進一步成熟化了。
2007 年,紐約時報在 100 個亞馬遜的虛擬機服務器上使用 Hadoop 轉換了 4TB 的圖片數據更加加深了人們對 Hadoop 的印象。
2008年4月,Hadoop打破世界紀錄,成爲最快排序1TB數據的系統,它採用一個由910個節點構成的集羣進行運算,排序時間只用了209s。
在2009年5月,Hadoop更是把1TB數據排序時間縮短到62s。
2011年, Yahoo** 將 Hadoop 團隊獨立出來**,成立了ー個子公司 Hortonworks,專門提供 Hadoop 相關的服務。
Hadoop從此名聲大噪,迅速發展成爲大數據時代最具影響力的開源分佈式開發平臺,併成爲事實上的大數據處理標準。
任務3:Hadoop特性
Hadoop 是一個能夠讓用戶輕鬆架構和使用的分佈式計算的平臺。用戶可以輕鬆地在 Hadoop 發和運行處理海量數據的應用程序。其優點主要有以下幾個:
(1)高可靠性:數據存儲多個備份,集羣設置在不同機器上,可以防止一個節點宕機造成集羣損壞。當數據處理請求失敗後,Hadoop會自動重新部署計算任務。Hadoop框架中有備份機制和校驗模式,Hadoop會對出現問題的部分進行修復,也可以通過設置快照的方式在集羣出現問題時回到之前的一個時間點。
(2)高擴展性:Hadoop 是在可用的計算機集羣間分配數據並完成計算任務的。爲集羣添加新的節點並不複雜,所以集羣可以很容易進行節點的擴展,擴大集羣。
(3)高效性:Hadoop能夠在節點之間動態地移動數據,並保證各個節點的動態平衡,因此處理速度非常快。
(4)高容錯性:Hadoop的分佈式文件系統HDFS在存儲文件時會在多個節點或多臺機器上存儲文件的備份副本,當讀取該文檔出錯或者某一臺機器宕機了,系統會調用其他節點上的備份文件,保證程序順利運行。如果啓動的任務失敗,Hadoop會重新運行該任務或啓用其他任務來完成這個任務沒有完成的部分。
(5)低成本:Hadoop 是開源的,既不需要支付任何費用即可下載並安裝使用,節省了軟件購買的成本。
(6)可構建在廉價的機器上:Hadoop不要求機器的配置達到極高的水準,大部分普通商用服務器就可以滿足要求,它通過提供多個副本和容錯機制來提高集羣的可靠性。
(7)Hadoop基本框架用Java語言編寫:Hadoop含有使用Java語言編寫的框架,因此運行在Linux生產平臺上是非常理想的。