Hadoop是Apache開源的分布式計算框架,由Java語言實現,支持對海量數據的分布式計算,其框架中最核心設計是HDFS和MapReduce。
Hadoop的優勢
1)高可靠性:因為Hadoop假設計算元素和存儲會出現故障,因為它維護多個工作數據副本,在出現故障時可以對失敗的節點重新分布處理
2)高擴展性:在集群間分配任務數據,可方便的擴展數以千計的節點。
3)高效性:在MapReduce的思想下,Hadoop是並行工作的,以加快任務處理速度。
4)高容錯性:自動保存多份副本數據,並且能夠自動將失敗的任務重新分配。
Hadoop組成
1)Hadoop HDFS:一個高可靠、高吞吐量的分布式文件系統。
2)Hadoop MapReduce:一個分布式的離線並行計算框架。
3)Hadoop YARN:作業調度與集群資源管理的框架。
4)Hadoop Common:支持其他模塊的工具模塊。
1 Hadoop生態圈重要組件(數據處理過程的視角)
1.1 數據采集
Sqoop—— 結構化數據/數據遷入遷出工具
Flume Kafka—— 分布式日志采集工具 分布式消息隊列 針對半結構化或非結構化數據
1.2 數據存儲
HDFS—— 基於Hadoop的分布式文件存儲系統
HBase—— 基於Hadoop的列式分布式NoSQL數據庫
1.3 資源調度
YARN—— 作業調用和集群資源管理框架
k8s
1.4 計算框架
MapReduce—— 基於Hadoop的分布式批處理框架
Spark Core—— 批處理
Spark SQL—— 交互式分析
Spark Streaming—— 流處理
1.5 數據分析
Hive—— 基於Hadoop的類SQL數據倉庫工具
Spark MLib—— 數據挖掘
ElasticSearch—— 全文搜索
1.6 數據可視化
Echarts D3 Cboard
1.7 Zookeeper
分布式協調組件
2 Hadoop生態圈技術體系(產品的視角)
Hadoop
- HDFS:分布式文件系統
- YARN:分布式資源管理系統
- MapReduce:分布式批處理計算框架
Spark:分布式通用計算引擎
- Spark Core:基礎計算框架(批處理)
- Spark SQL:結構化數據查詢
- Spark Streaming:實時流處理
- Spark MLib:機器學習
HBase:分布式列式數據庫
Hive:Hadoop數據倉庫
ElasticSearch:分布式全文搜索引擎
外圍工具:Sqoop、Flume、Kafka
HDFS
- 概念
- Hadoop分布式文件系統(Hadoop Distributed File System)
- 在大數據技術體系中,地位無可替代
- 主要特點
- 高容錯性:數據冗余多副本,副本丟失后自動恢復
- 高可用:NameNode HA、安全模式
- 高擴展:10K節點規模
- 簡單一致性模型:一次寫入多次讀取,支持追加,不允許修改
- 流式數據訪問:批量讀而非隨機讀,關注吞吐量而非時間
- 大規模數據集:典型文件大小GB~TB級,百萬規模以上的文件數量, PB級以上數據
- 大規模批處理:移動計算不移動數據
- 構建成本低且安全可靠:運行在大量廉價商用機器上,硬件錯誤是常態,提供容錯機制
MapReduce
- 概念
- 面向批處理的分布式計算框架
- 一種編程模型:將MapReduce程序分為Map階段和Reduce階段
- 核心思想
- 分而治之,分布式計算
- 移動計算,而非移動數據
- 特點
- 高容錯:任務失敗,自動調度到其他節點重新執行
- 高擴展:計算能力隨着節點數增加,近似線性遞增
- 適用於大規模數據的離線批處理
- 降低了分布式編程的門檻
YARN
- 概念
- 另一種資源協調器(Yet Another Resource Negotiator)
- 分布式通用資源管理系統
- 為了解決Hadoop 1.x中MapReduce的先天缺陷
- 負責集群資源的統一管理
- 從Hadoop 2.x開始,YARN成為Hadoop的核心組件
- 特點
- 專注於資源管理和作業調度
- 通用性強:適用各種計算框架,如Spark
- 高可用:ResourceManager高可用、HDFS高可用
- 高擴展
Spark
- 大規模分布式通用計算引擎
- Spark Core:核心計算框架(批處理)
- Spark SQL:結構化數據查詢
- Spark Streaming:實時流處理
- Spark MLib:機器學習
- Spark GraphX:圖計算
• 采用Scala語言開發
- 特點
- 計算高效:內存計算、Cache緩存機制、DAG引擎、多線程池模型
- 通用易用:適用於批處理、流處理、交互式計算、機器學習算法等場景
- 運行模式多樣:Local、Standalone、YARN/Mesos
Hive
- 概念
- Hadoop數據
- 對海量結構化數據進行高性能查詢和分析
- 采用HDFS或HBase作為數據存儲
- 利用MapReduce做底層計算
- 特點
- 提供類SQL查詢語言
- 支持命令行,或JDBC/ODBC
- 提供靈活的擴展性
- 提供復雜數據類型,擴展函數和腳本等
HBase
- 概念
- Hadoop Database
- Google BigTable的開源實現
- 分布式NoSQL數據庫
- 列式數據庫,適合存儲半結構化、非結構化數據
- 采用HDFS作為文件存儲系統
- 特點
- 高性能:支持高並發寫入和查詢
- 高擴展:數據自動切分和分布,可動態擴容,無需停機
- 高可用:建立在HDFS分布式文件系統之上
ElasticSearch
- 開源的分布式全文檢索引擎
- 基於Lucene實現全文數據的快速存儲、搜索和分析
- 處理大規模數據:PB級以上
- 具有較強的擴展性,集群規模可達上百台
- 首選的分布式搜索引擎