淺析大資料框架 Hadoop
作者:幻好
來源:恆生LIGHT雲社群
Hadoop 概念及其發展
Hadoop 最早起源於 Nutch。Nutch 的設計目標是構建一個大型的全網搜尋引擎,包括網頁抓取、索引、查詢等功能,但隨著抓取網頁數量的增加,遇到了嚴重的可擴充套件性問題——如何解決數十億網頁的儲存和索引問題。
2003 年、2004 年穀歌發表的兩篇論文為該問題提供了可行的解決方案。
- 分散式檔案系統(GFS),可用於處理海量網頁的儲存。
- 分散式計算框架 MAPREDUCE,可用於處理海量網頁的索引計算問題。
Nutch 的開發人員完成了相應的開源實現 HDFS 和 MAPREDUCE,並從 Nutch 中剝離成為獨立專案 HADOOP,到 2008 年 1 月,HADOOP 成為 Apache 頂級專案(同年,cloudera 公司成立),迎來了它的快速發展期。
- 廣義上來說,Hadoop 指代大資料的一個生態圈,包括很多其他的軟體。
- 狹義上來說,Hadoop 就是單獨指代 Hadoop 這個軟體。
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
優點:擁有全世界的開源貢獻者,程式碼更新迭代版本比較快
缺點:版本的升級,版本的維護,版本的相容性,版本的補丁都可能考慮不太周到,學習可以用,實際生產工作環境儘量不要使用
apache 所有軟體的下載地址(包括各種歷史版本):
http://archive.apache.org/dist/
-免費開源 hortonWorks
hortonworks 主要是雅虎主導 Hadoop 開發的副總裁,帶領二十幾個核心成員成立 Hortonworks,核心產品軟體 HDP(ambari),HDF 免費開源,並且提供一整套的 web 管理介面,供我們可以通過 web 介面管理我們的叢集狀態,web 管理介面軟體 HDF 網址(http://ambari.apache.org/)
-軟體收費版本 ClouderaManager
cloudera 主要是美國一家大資料公司在 apache 開源 hadoop 的版本上,通過自己公司內部的各種補丁,實現版本之間的穩定執行,大資料生態圈的各個版本的軟體都提供了對應的版本,解決了版本的升級困難,版本相容性等各種問題
Hadoop 的模組組成
- Hadoop HDFS:一個高可靠、高吞吐量的分散式檔案系統。
- Hadoop MapReduce:一個分散式的離線平行計算框架。
- Hadoop YARN:作業排程與叢集資源管理的框架。
- Hadoop Common:支援其他模組的工具模組。
Hadoop 的架構模型
NameNode 與 ResourceManager 單節點架構模型
檔案系統核心模組:
- NameNode:叢集當中的主節點,主要用於管理叢集當中的各種資料
- secondaryNameNode:主要能用於 hadoop 當中元資料資訊的輔助管理
- DataNode:叢集當中的從節點,主要用於儲存叢集當中的各種資料
資料計算核心模組:
- ResourceManager:接收使用者的計算請求任務,並負責叢集的資源分配
- NodeManager:主要用於接收 applicationMaster 分配的任務
- applicationMaster: resourcemanager 為每個計算任務啟動一個 appMaster, appMatser 主要負責資源的申請, 任務的分配
- NameNode 與 ResourceManager 高可用架構模型
檔案系統核心模組:
- 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 資料庫已經很好的解決了大資料基本分析層面的問題,未來持續向著更易用更快的方向發展。
高階資料分析向著下沉到資料庫內部的方向發展。高階資料分析層面的難點不在分析,而在於資料本身的數量和質量。期待這一方面有更多創新湧現。
- 淺析大資料框架 Hadoop
- 一款好用的Java外掛 - Lombok
- 深入程式碼理解MVC模式、MVP模式和MVVM模式
- 深入理解大資料數倉工具 Apache Hive 底層原理
- ES2022 有什麼新功能
- 前端快取那些事
- 大資料分散式計算系統 Spark 入門核心之 RDD
- Nginx基本介紹 跨域解決方案
- 「MySQL」資料庫備份和還原
- 雲原生PaaS平臺LIGHT-CORE實踐之道:基於K8s,聚焦服務與價值
- 聊聊 ab 和 jmeter 的併發模型
- 【Pandas學習筆記01】強大的分析結構化資料的工具集
- 白話 Linux 容器資源的隔離限制原理
- Hadoop 入門筆記—核心元件 YARN
- Hadoop 入門筆記—核心元件 YARN
- Hadoop 入門筆記—核心元件 MapRuduce
- Hadoop 入門筆記—核心元件 HDFS
- Python量化資料倉庫搭建3:資料落庫程式碼封裝
- Python量化資料倉庫搭建系列2:Python操作資料庫
- Python量化資料倉庫搭建系列2:Python操作資料庫