淺析大資料框架 Hadoop

語言: CN / TW / HK

作者:幻好

來源:恆生LIGHT雲社群

Hadoop 概念及其發展

Hadoop 最早起源於 Nutch。Nutch 的設計目標是構建一個大型的全網搜尋引擎,包括網頁抓取、索引、查詢等功能,但隨著抓取網頁數量的增加,遇到了嚴重的可擴充套件性問題——如何解決數十億網頁的儲存和索引問題。

2003 年、2004 年穀歌發表的兩篇論文為該問題提供了可行的解決方案。

  • 分散式檔案系統(GFS),可用於處理海量網頁的儲存。
  • 分散式計算框架 MAPREDUCE,可用於處理海量網頁的索引計算問題。

Nutch 的開發人員完成了相應的開源實現 HDFS 和 MAPREDUCE,並從 Nutch 中剝離成為獨立專案 HADOOP,到 2008 年 1 月,HADOOP 成為 Apache 頂級專案(同年,cloudera 公司成立),迎來了它的快速發展期。

  • 廣義上來說,Hadoop 指代大資料的一個生態圈,包括很多其他的軟體。
  • 狹義上來說,Hadoop 就是單獨指代 Hadoop 這個軟體。

1.jpeg

Hadoop 的歷史版本介紹

0.x 系列版本:hadoop 當中最早的一個開源版本,國外使用較多,因為當時國內大資料還沒發展起來,在此基礎上演變而來的 1.x 以及 2.x 的版本

1.x 版本系列:hadoop 版本當中的第二代開源版本,主要修復 0.x 版本的一些 bug 等,是存在時間最短的一代。

2.x 版本系列:架構產生重大變化,引入了 yarn 平臺等許多新特性,國內目前使用最多的版本,因為當時國內正處於大資料爆發的階段。

3.x 版本系列:引入了一些重要的功能和優化,包括 HDFS 糾刪碼、多 Namenode 支援(兩個以上)、MR Native Task 優化、YARN 基於 cgroup 的記憶體和磁碟 IO 隔離等,且對 JDK 最低版本要求為 JDK1.8。發行時間較晚,目前使用不多,但未來必將成為主流。

hadoop 三大公司髮型版本介紹

-免費開源版本 apache

官網:http://hadoop.apache.org/

優點:擁有全世界的開源貢獻者,程式碼更新迭代版本比較快

缺點:版本的升級,版本的維護,版本的相容性,版本的補丁都可能考慮不太周到,學習可以用,實際生產工作環境儘量不要使用

apache 所有軟體的下載地址(包括各種歷史版本):

http://archive.apache.org/dist/

-免費開源 hortonWorks

官網:https://hortonworks.com/

hortonworks 主要是雅虎主導 Hadoop 開發的副總裁,帶領二十幾個核心成員成立 Hortonworks,核心產品軟體 HDP(ambari),HDF 免費開源,並且提供一整套的 web 管理介面,供我們可以通過 web 介面管理我們的叢集狀態,web 管理介面軟體 HDF 網址(http://ambari.apache.org/

-軟體收費版本 ClouderaManager

官網:https://www.cloudera.com/

cloudera 主要是美國一家大資料公司在 apache 開源 hadoop 的版本上,通過自己公司內部的各種補丁,實現版本之間的穩定執行,大資料生態圈的各個版本的軟體都提供了對應的版本,解決了版本的升級困難,版本相容性等各種問題

Hadoop 的模組組成

  1. Hadoop HDFS:一個高可靠、高吞吐量的分散式檔案系統。
  2. Hadoop MapReduce:一個分散式的離線平行計算框架。
  3. Hadoop YARN:作業排程與叢集資源管理的框架。
  4. Hadoop Common:支援其他模組的工具模組。

Hadoop 的架構模型

NameNode 與 ResourceManager 單節點架構模型

f7e3084245fe5646171b14b607d48c3d.png

檔案系統核心模組:

  • NameNode:叢集當中的主節點,主要用於管理叢集當中的各種資料
  • secondaryNameNode:主要能用於 hadoop 當中元資料資訊的輔助管理
  • DataNode:叢集當中的從節點,主要用於儲存叢集當中的各種資料

資料計算核心模組:

  • ResourceManager:接收使用者的計算請求任務,並負責叢集的資源分配
  • NodeManager:主要用於接收 applicationMaster 分配的任務
  • applicationMaster: resourcemanager 為每個計算任務啟動一個 appMaster, appMatser 主要負責資源的申請, 任務的分配
  • NameNode 與 ResourceManager 高可用架構模型

2239b4a3398b4a6e2bccf6ce46192dde.png

檔案系統核心模組:

  • NameNode:叢集當中的主節點,主要用於管理叢集當中的各種資料,一般都是使用兩個,實現 HA 高可用
  • JournalNode:元資料資訊管理程序,一般都是奇數個
  • DataNode:從節點,用於資料的儲存

資料計算核心模組:

  • ResourceManager:Yarn 平臺的主節點,主要用於接收各種任務,通過兩個,構建成高可用
  • NodeManager:Yarn 平臺的從節點,主要用於處理 ResourceManager 分配的任務

Hadoop 目前的現狀

自 2015 年開始 Hadoop 暴露出諸多問題引起注意。隨後 Gartner、IDG 等公司分析師、Hadoop 使用者和 Hadoop 和大資料圈內人士越來越多的反映出各種問題。

究其原因,主要如下:

  • Hadoop 棧過於複雜,元件眾多,整合困難,玩轉代價過高
  • Hadoop 創新速度不夠(或者說起點過低),且缺乏統一的理念和管控,使得其眾多元件之間的整合非常複雜
  • 受到 Cloud 技術的衝擊,特別是類 S3 物件儲存提供了比 HDFS 更廉價、更易用、更可伸縮的儲存,撬動了 Hadoop 的根基 HDFS
  • 對 Hadoop 期望過高,Hadoop 發跡於廉價儲存和批處理,而人們期望 Hadoop 搞定大資料所有問題,期望不匹配造成滿意度很低
  • 人才昂貴,且人才匱乏

總結

綜上,作為第一代大資料方案的 Hadoop 巔峰已過,大資料進入第二代:分散式資料庫。

分散式資料庫特別是 MPP 資料庫已經很好的解決了大資料基本分析層面的問題,未來持續向著更易用更快的方向發展。

高階資料分析向著下沉到資料庫內部的方向發展。高階資料分析層面的難點不在分析,而在於資料本身的數量和質量。期待這一方面有更多創新湧現。