【Spark Streaming】Spark Streaming原理與介紹

目錄

整體流程

數據抽象

總結


  • 整體流程

Spark Streaming中,會有一個接收器組件Receiver,作爲一個長期運行的task跑在一個Executor上。Receiver接收外部的數據流形成input DStream

  DStream會被按照時間間隔劃分成一批一批的RDD,當批處理間隔縮短到秒級時,便可以用於處理實時數據流。時間間隔的大小可以由參數指定,一般設在500毫秒到幾秒之間。

對DStream進行操作就是對RDD進行操作,計算處理的結果可以傳給外部系統。

Spark Streaming的工作流程像下面的圖所示一樣,接收到實時數據後,給數據分批次,然後傳給Spark Engine(引擎)處理最後生成該批次的結果。

 

  • 數據抽象

Spark Streaming的基礎抽象是DStream(Discretized Stream),離散化數據流,連續不斷的數據流),代表持續性的數據流和經過各種Spark算子操作後的結果數據流

 

DStream本質上就是一系列時間上連續的RDD

 

對DStream的數據的進行操作也是按照RDD爲單位來進行的

 

容錯性

底層RDD之間存在依賴關係,DStream直接也有依賴關係,RDD具有容錯性,那麼DStream也具有容錯性,如下,每一個橢圓形表示一個RDD,橢圓形中的每個圓形代表一個RDD中的一個Partition分區,每一列的多個RDD表示一個DStream(圖中有三列所以有三個DStream),每一行最後一個RDD則表示每一個Batch Size所產生的中間結果RDD

 

準實時性/近實時性

Spark Streaming將流式計算分解成多個Spark Job,對於每一時間段數據的處理都會經過Spark DAG圖分解以及Spark的任務集的調度過程。對於目前版本的Spark Streaming而言,其最小的Batch Size的選取在0.5~5秒鐘之間。所以Spark Streaming能夠滿足流式準實時計算場景,對實時性要求非常高的如高頻實時交易場景則不太適合

 

  • 總結

簡單來說DStream就是對RDD的封裝,你對DStream進行操作,就是對RDD進行操作,對於DataFrame/DataSet/DStream來說本質上都可以理解成RDD

 

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