Spark Streaming原理與架構

簡介:Spark Streaming 是基於spark的流式批處理引擎,其基本原理是把輸入數據以某一時間間隔批量的處理,當批處理間隔縮短到秒級時,便可以用於處理實時數據流。

計算流程:

  • 將流試計算分解成一系列短小的批處理作業,批處理引擎是SparkCore
  • 按照輸入數據的batch size(如1秒),將數據分解成一段一段轉換成RDD
  • Spark Streaming中對DStream的Transformation操作變爲針對Spark中對RDD的Transformation操作,將RDD經過操作變成中間結果保存在內存中。

在這裏插入圖片描述

架構圖:
在這裏插入圖片描述
解釋:

  • Spark Streaming從各種輸入源中讀取數據,並把數據分組爲小的批次

  • 時間區間的大小是由批次間隔這個參數決定的。批次間隔一般設在0.5秒到幾秒之間

  • 每個輸入批次都形成一個RDD,以 Spark 作業的方式處理並生成其他的 RDD

  • 驅動器程序中的 StreamingContext 會週期性地運行 Spark 作業來處理這些數據
    在這裏插入圖片描述

  • 每個RDD代表數據流中一個時間片內的數據

原理詳細圖解:

  • 按照時間間隔(BatchInterval 0.5s 到 幾秒不等) 劃分數據爲微批次(Micro-Batch),每批次數據當做RDD,再進行處理分析
    在這裏插入圖片描述

  • 創建StreamingContext流試上下文對象,但是底層還是SparkContext

在這裏插入圖片描述

  • 啓動接收器Receiver,Receiver作爲Task任務運行在Executor中,並且一直運行,一直接收數據
    在這裏插入圖片描述

  • Receive按照時間間隔來接收數據,將流試數據劃分爲多個Block塊,劃分流式數據的時間間隔BlockInterval,默認值爲200ms,通過屬性【spark.streaming.blockInterval】設置

  • 最後到達時間間隔BlockInterval,加載SparkContext處理數據

循環處理流試數據 下圖:
在這裏插入圖片描述

總結:
整個Streaming運行過程中,涉及到兩個時間間隔:

  1. 批次時間間隔:BatchInterval
    每批次數據的時間間隔,每隔多久加載一個Job;

  2. Block時間間隔:BlockInterval
    接收器劃分流式數據的時間間隔,可以調整大小哦,官方建議最小值不能小於50ms
    默認值爲200ms,屬性:spark.streaming.blockInterval,調整設置

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章