經過案例對SparkStreaming 透徹理解三板斧之二:解密SparkStreaming運行機制

一:spark各個子框架的關係:框架

 上節課咱們採用了降維的方式查看了整個spark streaming的大概運行的過程,再次強調,spark streaming 實際上是構建在spark core之上的一個應用程序,若是要構建一個強大的spark應用程序 ,spark streaming 是一個值得借鑑的參考,spark streaming涉及多個job交叉配合,裏面涉及到了spark的全部的核心組件,若是對spark streaming 精通了的話,能夠說就精通了整個spark,因此精通掌握spark streaming是相當重要的spa

spark 的各個子框架都是基於spark core的。spark streaming在內部的處理機制是接受實時流的數據,並根據必定的時間間隔分紅一批一批的數據,而後經過spark engine處理這些批數據,最後獲得處理後的一批一批的數據。線程

對應的批數據,在spark內核對應RDD,在spark streaming中對應DStream ,一個DStream至關於RDD的模板,對應一組RDD(RDD的一個序列)對象

通俗點理解的話,在數據分紅一批一批後,經過一個隊列,而後spark引擎從該隊列中依次一個一個的取出批數據,把批數據封裝成一個DStream,由於DStream是RDD的模板,是RDD的一個邏輯級別的抽象,因此實質上是把數據封裝成爲物理級別的RDD.隊列

二:Spark Streaming基礎概念理解:事務

爲了更好的理解spark streaming,咱們先簡單的對相關概念理解一下kafka

1 離散流:(Discretized Stream ,DStream):這是spark streaming對內部的持續的實時數據流的抽象描述,也即咱們處理的一個實時數據流,在spark streaming中對應一個DStreaminput

2 批數據:將實時流時間以時間爲單位進行分批,將數據處理轉化爲時間片數據的批處理it

3 時間片或者批處理時間間隔:邏輯級別的對數據進行定量的標準,以時間片做爲拆分流數據的依據。spark

4 窗口長度:一個窗口覆蓋的流數據的時間長度。好比說要每隔5分鐘統計過去30分鐘的數據,窗口長度爲6,由於30分鐘是batch interval 的6倍

5 滑動時間間隔:好比說要每隔5分鐘統計過去30分鐘的數據,窗口時間間隔爲5分鐘

6 input DStream :一個inputDStream是一個特殊的DStream 將spark streaming鏈接到一個外部數據源來讀取數據。

7 Receiver :長時間(可能7*24小時)運行在Excutor之上,每一個Receiver負責一個inuptDStream (好比讀取一個kafka消息的輸入流)。每一個Receiver,加上inputDStream 會佔用一個core/slot

重點來了!!!咱們用時空維度和空間維度分別對DStream 和RDD來更加深刻而且另類的理解spark streaming,以及兩者之間的關係。

DStream 對應時空維度,空間加上時間(從目前來看,spark streaming的精妙之一是用時間來解耦合,是目前所見最好的解耦合的方式),RDD對應空間維度,整個sparkStreaming是時空維度。

縱軸爲空間維度:表明的是RDD的依賴關係構成的具體的處理邏輯的步驟,是用DStream來表示的。

橫軸爲時間維度:按照特定的時間間隔不斷地生成job對象,並在集羣上運行。

隨着時間的推移,基於DStream Graph 不斷生成RDD Graph ,也即DAG的方式生成job,並經過Job Scheduler的線程池的方式提交給spark cluster不斷的執行。(sparkStreaming只關注時間維度不關注空間維度)

由上可知,RDD    與  DStream的關係以下:

1.RDD是物理級別的,而 DStream 是邏輯級別的

2.DStream是RDD的封裝類,是RDD進一步的抽象

3.DStream 是RDD的模板。DStream要依賴RDD進行具體的數據計算

(注意:縱軸維度須要RDD,DAG的生成模板,須要TimeLine的job控制器

橫軸維度(時間維度)包含batch interval,窗口長度,窗口滑動時間等。)

4.inputStream和outputStream分別表明數據的輸入和輸出

5.具體的job運行在spark cluster之上,此時系統的容錯就很是重要,而spark streaimg的容錯很是巧妙,它巧妙的借用了spark core rdd的容錯而容錯。(RDD能夠指定StorageLevel來實現存放多個副本用來作容錯)

6.事務處理:數據必定會被處理,而且只會對數據處理一次,這個特性對於那些諸如計費系統的實現很是重要

相關文章
相關標籤/搜索