流计算
一.概述
實時獲取來自不同數據源的海量數據經過實時分析處理,或的有價值的信息.
1.數據的處理流程
- 靜態數據:數據不會發生變化,如數據倉庫中的數據;
- 流數據:數據以大量,快速.時變的流形式持續到達.
2.流數據特征:
- 數據快速持續到達,潛在大小也許是無窮無盡的;
- 數據來源眾多,格式復雜;
- 數據量大,但是不十分關注存儲,一旦經過處理,要么被丟棄,要么被歸檔存儲;
- 數據順序顛倒,或者不完整,系統無法控制將要處理的新到達的數據元素的順序;
3.數據的分析計算
4. 大數據的典型的三大計算框架
- Hadoop
- Spark
- Strom
5.流計算基本理念
- 數據的價值隨著時間的流逝而降低;
- 當事件出現時就應該進行處理,兒不是緩存起來進行批處理;
- 低延遲,高可靠,可擴展;
6.流計算系統要求:高性能,海量式,實時性,分布式,易用性,可靠性;
二.流計算處理流程
1.數據實時采集:通常采集多個數據源的海量數據需要保證實時性,低延遲與穩定可靠;
2.數據采集系統的基本架構
3.數據實時計算
4.實時查詢服務
5.流處理系統和傳統的數據處理系統的區別
三.流計算的應用
-
電子商務
-
實時交通
四.開源流計算框架Storm
1.Storm 簡介
1.1 優點:
- 可以簡單,高效,可靠地處理流數據,支持多種編程語言,處理非常靈活;
- 可以非常方便的與現有數據庫系統產品進行融合,從而開發出非常強大的實時計算系統;
1.2 特點
- 整合性,簡易的API;
- 可擴展性;
- 可靠的消息處理;
- 支持各種編程語言;
- 快速部署;
- 免費開源;
2.Storm 設計思想
2.1 Storm 將流數據Stream 描述成無限的Tuple 序列,這些Tuple 序列會以分布式的方式并行地創建和處理;
2.2 Spout
2.3 Bolt
2.4 Topology
2.5 Stream Groupings
3.Storm 框架設計
3.1 Storm 與Hadoop 類似;
3.2 Storm 集群采用"Master-Worker"的節點方式.
3.3 Strom 集群架構圖
3.4 Worker 進程
3.5 Storm 工作流程
四.Spark Streaming,Samza流計算框架及其比較
4.1 Spark Streaming
- 面向批處理的實時計算框架,獨特的RDD 設計方式;
4.2 Spark Streaming 的設計
- 可以整合多種數據源,如Kafka,Flume,HDFS,TCP套接字;
- 處理后的數據可以存儲至文件系統,數據庫,或顯示在儀表盤里;
4.3 執行流程
-
Spark Streaming 的基本原理是將實時輸入數據流以時間片(秒級)為單位進行拆分,然后經Spark 引擎以類似批處理的方式處理每個時間片數據;
-
DStream 操作示意圖
-
數據流的建模:
4.4 Spark Streaming 與Storm 的對比
4.5 Samza
-
基本概念:
-
作業:
-
分區:每一個分區都是一個消息隊列;
-
任務:
-
數據流圖:
-
-
Samza 架構:
- 流數據層:負責數據流的收集分發,流處理層和執行層都被設計成可插拔的,開發人員可以使用其他框架來替代YARN 和Kafka;
- 執行層;
- 處理層;
-
對比:
-
Storm Spark Streaming和Samza的對比
總結
- 上一篇: 【操作系统复习】操作系统的概念、功能和目
- 下一篇: 牛客16494 生活大爆炸版石头剪刀布