SparkStreaming — 架構原理分析

Spark Streaming運行原理

  首先我們看一下Spark Streaming的運行流程,和之前Spark Core一樣都是先創建Context,這裏創建的是StreamingContext。Spark Streaming的啓動和Spark Core不一樣,它是調用StreamingContext.start()方法來啓動,但是觸發執行RDD算子也是一樣的需要action操作,下面就先看一下整個運行流程:
Spark Streaming運行流程
  上就是Spark Streaming的運行流程,首先創建StreamingContext,在初始化的時候會先創建兩個重要的組件DStreamGraph和JobScheduler,而在start()方法中創建了其他兩個重要組件JobGenerator和ReceiverTracker,下面具體分析一下每個組件在整個工作流程中的作用。
  這裏先說一下DStreamGraph的功能,它和DAGScheduler的功能類似,它負責記錄每個DStream直接的狀態關係(依賴關係);
  在start()方法調用之後,Driver節點開始去Spark集羣上的某個Executor上啓動輸入DStream(JavaReceiverDStream)的Receiver;
  接着worker節點的Executor上的Receiver接收到數據之後,就會先將數據保存到Executor對應的BlockManager中,接着會發送一份數據信息到StreamingContext的ReceiverTracker中;
  接着JobGenerator會就根據我們定義的batch間隔去ReceiverTracker中獲取一次時間間隔內的數據,將其封裝爲一個RDD(batch interval時間間隔的數據對應一個RDD)。它就會根據DStreamGraph定義的算子和各個DStream之間的依賴關係,去生成一個Job,Job的初始RDD就是剛纔創建的batch對應的 RDD,然後提交給JobScheduler;
  JobScheduler的任務就是負責提交Job,Job的提交流程就和之前Spark Core裏面的提交流程是一樣的。
  上面就是Spark Streaming的基本運行流程,我們從Spark Streaming層面分析了各個組件在整個運行過程中的作用,其實底層依然是基於Spark Core Engine來運行的。

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