Hadoop生態圈
What is Hadoop?
Hadoop思想來源
Google是Hadoop思想和技術的來源. 具體來說就是Hadoop的" 三駕馬車" --Google 發佈的三篇技術思想論文:
- The Google File System
- MapReduce_Simplified Data Processing on Large Clusters
- Bigtable_A Distributed Storage System for Structured Data
Hadoop的歷史
Hadoop作者Doug Cutting , 他在Yahoo就職期間開發了Hadoop項目. 2003-2004年, Google公開GFS和MapReduce思想細節後, Doug Cutting等人以此爲基礎利用業餘時間實現DFS和MapReduce機制. Hadoop名字的來源是Doug兒子的大象玩具.
2005年Hadoop作爲Lucene的子項目Nutch的一部分被正式引入Apache基金會. 06年MapReduce和Nutch Distributed File System(NDFS)被納入Hadoop項目.
至此, Hadoop作爲一個分佈式系統基礎架構由Apache基金會所開發並以開源的形式提供給開發者. 主要用來解決海量數據的存儲和計算處理.
廣義上來講, Hadoop一般指Hadoop生態圈, 圈中有如下圖衆多的技術:
三大發行版本
- Apache Hadoop: 原始版本, 適合初學者
- Cloudera Hadoop: 適合大型互聯網企業中的項目, 收費
- Hortonworks Hadoop: 文檔相對好點
Hadoop的優勢
- 高可靠性
底層維護多個數據副本, 即使某個節點故障, 數據也不會丟失. - 高擴展性
在集羣間分配數據, 可以很輕鬆地擴展節點. - 高效性
在MR思想下, 實現並行處理, 加快處理速度, 提高效率. - 高容錯性
能夠自動將失敗的任務重新分配.
Hadoop的組成
Hadoop1.*和2.*的區別
Hadoop1.*的組成
Hadoop2.*的組成
從這兩幅圖中可以看出, 1.*的版本中, MapReduce除了負責計算之外, 還要對系統資源進行調度, 包括CPU, 內存, 磁盤等. 因此, MapReduce負責的功能太多太複雜, 容易出現問題, 耦合性較大.
於是2.*版本中, 將資源調度模塊從MapReduce中抽離, 讓它成爲單獨的一個模塊, 實現該模塊功能的工具就是Yarn. Yarn的出現, 成功讓MapReduce功能解耦, 更加模塊化
Hadoop組成
HDFS
- NameNode
- 接受客戶端讀寫請求
- 管理元數據
- 管理DataNode
- DataNode
- 接受客戶端讀請求
- 存儲源數據
- 向NameNode彙報心跳
- 構建PipeLine
- 管理本機上Block塊的元數據
- SecondaryNameNode
- 持久化元數據
Yarn
- ResourceManager
- 處理客戶端請求
- 監控NodeManager
- 啓動並監控ApplicationMaster
- 資源調度與分配
- NodeManager
- 管理單節點上的資源
- 處理來自RM的命令
- 處理來自ApplicationMaster的命令
- ApplicationMaster
- 輔助數據切分
- 申請程序資源並分配給內部任務
- 任務監控與容錯
- Container
- Yarn中的資源抽象, 它封裝了某個節點上多維度資源, 例如: 內存, CPU, 磁盤, 網絡等.
MapReduce
MapReduce將計算分兩個階段, Map和Reduce.
- Map階段並行處理輸入數據;
- Reduce階段對Map結果進行彙總