天天看點

【Spark Streaming】Spark Streaming原理與介紹

目錄

整體流程

資料抽象

總結

  • 整體流程

Spark Streaming中,會有一個接收器元件Receiver,作為一個長期運作的task跑在一個Executor上。Receiver接收外部的資料流形成input DStream

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

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

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

【Spark Streaming】Spark Streaming原理與介紹
  • 資料抽象

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

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

【Spark Streaming】Spark Streaming原理與介紹

對DStream的資料的進行操作也是按照RDD為機關來進行的

【Spark Streaming】Spark Streaming原理與介紹

容錯性

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

【Spark Streaming】Spark Streaming原理與介紹

準實時性/近實時性

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

  • 總結

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

【Spark Streaming】Spark Streaming原理與介紹

繼續閱讀