Storm(流計算)技術原理 - 下

Streaming 的關鍵特性介紹

Nimbus HA:

容災

圖:容災示意圖

容災能力:節點失效,自動遷移到正常節點,業務不中斷。

整個過程無需人工干預!

消息可靠性:

可靠

可靠性級別設置:

如果並不要求每個消息必須被處理(允許在處理過程中丟失一些信息),那麼可以關閉消息的可靠性處理機制,從而可以獲得較好的性能。關閉消息的可靠性機制一位着系統中的消息數會減半。

有三種方法可以關閉消息的可靠性處理機制:

  1. 將參數 Config.TOPOLGY_ACKERS 設置爲 0.

  2. Spout 發送一個消息時,使用不指定消息 message ID 的接口進行發送。

  3. Blot 發送消息時使用 Unanchor 方式發送,使 Tuple 樹不往下延伸,從而關閉派生消息的可靠性。

ACK 機制:

ACK

圖:Ack 機制

Streaming 與其他組件:

其他組件

整合 HDFS/HBase 等外部組件,將實時結構提供給其他組件,進程離線分析。

Spark Streaming

Spark Streaming 設計:

Spark Streaming 可整合多種輸入數據源,如 Kafka、Flume、 HDFS,甚至是普通的 TCP 套接字。經處理後的數據可存儲至文件 系統、數據庫,或顯示在儀表盤裏。

Spark

圖:SPark Streaming 支持的輸入、輸出數據源

Spark Streaming 的基本原理是將實時輸入數據流以時間片(秒級)爲單位進行拆分,然後經 Spark 引擎以類似批處理的方式處理每個時間片數據。

處理

圖:Spark Streaming 執行流程

Spark Streaming 最主要的抽象是 DStream(Discretized Stream,離散化數據流),表示連續不斷的數據流。在內部實現上,Spark Streaming 的輸入數據按照時間片(如 1 秒)分成一段一段的 DStream,每一段數據轉換爲 Spark 中的 RDD,並且對 DStream 的操作都最終轉變爲對相應的 RDD 的操作。

Dsteam

圖:DStream 操作示意圖

Spark Streaming 與 Storm 的對比:

Samza 技術原理

基本概念:

(1)作業:一個作業(Job)是對一組輸入流進行處理轉化成輸出流的程序。

(2)分區:

(3)任務:

(4)數據流圖:

數據流圖

圖:數據流圖

Samza 的系統架構:

Samza 系統架構主要包括:

  1. 流數據層(Kafka)

  2. 執行層(YARN)

  3. 處理層(Samza API)

流處理層和執行層都被設計成可插拔的,開發人員可以使用其他框架來替代 YARN 和 Kafka。

類別

圖:MapReduce 批處理架構和 Samza 流處理架構對比

處理分析過程:

過程

圖:處理分析過程圖

處理分析過程如下:

  1. Samza 客戶端需要執行一個 Samza 作業時,它會向 YARN 的 ResouceManager 提交作業請求。

  2. ResouceManager 通過與 NodeManager 溝通爲該作業分配容器(包含了 CPU、內存等資源)來運行 Samza ApplicationMaster。

  3. Samza ApplicationMaster 進一步向 ResourceManager 申請運行任務的容器。

  4. 獲得容器後,Samza ApplicationMaster 與容器所在的 NodeManager 溝通,啓動該容器,並在其中運行 Samza Task Runner。

  5. Samza Task Runner 負責執行具體的 Samza 任務,完成流數據處理分析。

Storm、Spark Streaming 和 Samza 的應用場景

編程的靈活性來講,Storm 是比較理想的選擇,它使用 Apache Thrift,可以用任何編程語言來編寫拓撲結構(Topology)。

當需要在一個集羣中把流計算和圖計算、機器學習、SQL 查詢分析等進行結合時,可以選擇 Spark Streaming,因爲,在 Spark 上可以統一部署 Spark SQL,Spark Streaming、MLlib,GraphX 等組件,提供便捷的一體化編程模型

當有大量的狀態需要處理時,比如每個分區都有數十億個元組,則可以選擇 Samza。當應用場景需要毫秒級響應時,可以選擇 Storm 和 Samza,因爲 Spark Streaming 無法實現毫秒級的流計算。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/xt8suF859a5qhvLd576sAg