第2課:通過案例對SparkStreaming 透徹理解三板斧之二:解密SparkStreaming運行機制和架構

Spark的龍脈/關鍵點就是Spark Streaming

Spark Streaming更像Spark Core上的一個應用程序,就是最複雜的應用程序


我們現在到官網看下:

wKiom1cu0HzyWWyRAADrC-XzLPM920.png


學習Spark的最佳的入手點是Spark Streaming

wKioL1cu0VnRpmZtAABnxQdh_w8440.png

循環的依據就是時間

wKiom1cu0KCSYmwJAALl2iPZEd0715.png


wKioL1cu0X_xhMgHAACNa_loMjU512.png


SparkStreaming運行機制和架構圖:


wKioL1cu0YHA4bVKAAC2w5YmVUo600.png

補充說明:

Spark Streaming 只不過是在RDD的基礎上加上了時間的維度,我們現在加上了空間的維度.

Event 就構成了數據的集合,而RDD是基於固定不變的數據集合生成的.

每個RDD 的DAG間隔關係是基於Event中的時間間隔.

其實還是個RDD DAG的依賴,不會現在具體有多少Job.

隨着時間的流逝DStream不斷的去填充這個模板.


wKioL1cu0YvjM1iBAALAP2q2F7w670.png

所以我們現在知道了:

1.我們要有靜態的DStream模板,這個模板就是 DStream Graph

2.我們要有動態的Job控制器,這個Job的控制器會根據我們設定的時間間隔,蒐集到數據,讓我們的DStream Graph 活起來就變成了RDD Graph


Spark Streaming 容錯:

RDD 怎麼容錯,Spark Streaming 就怎麼容錯;Spark Streaming 還可能採用一種限流的方式;在處理過程中,有可能根據需要進行資源的調整.

wKioL1cu0ZnRosqeAAK3gNJZd4c402.png


wKiom1cu0MSya-hAAACzNNSfyHY770.png


wKioL1cu0aTBkJHLAAHjLUHrVnM535.png

DStream是邏輯級別的,RDD是物理級別的;可以在處理的時候任務是對流的轉換,但其實根本就沒有DStream這回事.

DStream是RDD的模板,隨着時間的流逝DStream 中其實就是一系列的RDD,對DStream的操作就是對一個個的RDD的操作.

DStream就是對RDD操作的封裝。

這個依賴關係就是RDD依賴的模板

wKiom1cu0NWwYNTxAAMQs_8UwIc123.png


wKioL1cu0b-Tm58EAALa9x6BrK8465.png

RDD與DStream的關係:DStream 隨着時間的操作不斷的產生RDD


DStream是邏輯級別的,RDD 是物理級別的,DStream 是更高級別的抽象,RDD 是底層的實現。只不過這個邏輯級別的抽象實現了更高級別的抽象,DStream 隨着時間的維度,會有一系列的RDD. 即:我弄一個類,這個類裏面隨着時間的流逝有RDD. 或者說,我弄一個類隨着時間的集合去封裝RDD. 就是搞一個集合隨着時間維度不斷地生成RDD. 對一個集合的操作,轉過來作用於對一個RDD的操作( 即轉到內部成員的操作),就是做一個集合,然後作用於集合裏面的每個元素。

你就認爲DStream 就是對RDD的一個封裝的集合,對DStream的Transferance的操作就會作用於他內部封裝的集合的每一個RDD.所以對RDD的操作就產生了對RDD的依賴關係,就構成了DAG之間的依賴關係。

而爲什麼會對這個RDD進行操作,這個是由你對DStream操作的業務邏輯也就是空間維度決定的,這個空間維度作用於DStream這樣一個集合,隨着時間的流逝,Batch Interval產生了對每個Batch Interval數據,基於這個數據產生的RDD的Transfer操作,進而產生了RDD DAG 的依賴關係,然後隨着他的JobSchedular根據實際調度,基於這個RDD依賴關係把作業發佈到集羣上去運行,然後就不斷地產生Spark Job.


備註:

這是我的Spark版本定製班學習筆記

更多私密內容,請關注微信公衆號:DT_Spark

如果您對大數據Spark感興趣,可以免費聽由王家林老師每天晚上20:00開設的Spark永久免費公開課,地址YY房間號:68917580


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