Spark的龍脈/關鍵點就是Spark Streaming
Spark Streaming更像Spark Core上的一個應用程序,就是最複雜的應用程序
我們現在到官網看下:
學習Spark的最佳的入手點是Spark Streaming
循環的依據就是時間
SparkStreaming運行機制和架構圖:
補充說明:
Spark Streaming 只不過是在RDD的基礎上加上了時間的維度,我們現在加上了空間的維度.
Event 就構成了數據的集合,而RDD是基於固定不變的數據集合生成的.
每個RDD 的DAG間隔關係是基於Event中的時間間隔.
其實還是個RDD DAG的依賴,不會現在具體有多少Job.
隨着時間的流逝DStream不斷的去填充這個模板.
所以我們現在知道了:
1.我們要有靜態的DStream模板,這個模板就是 DStream Graph
2.我們要有動態的Job控制器,這個Job的控制器會根據我們設定的時間間隔,蒐集到數據,讓我們的DStream Graph 活起來就變成了RDD Graph
Spark Streaming 容錯:
RDD 怎麼容錯,Spark Streaming 就怎麼容錯;Spark Streaming 還可能採用一種限流的方式;在處理過程中,有可能根據需要進行資源的調整.
DStream是邏輯級別的,RDD是物理級別的;可以在處理的時候任務是對流的轉換,但其實根本就沒有DStream這回事.
DStream是RDD的模板,隨着時間的流逝DStream 中其實就是一系列的RDD,對DStream的操作就是對一個個的RDD的操作.
DStream就是對RDD操作的封裝。
這個依賴關係就是RDD依賴的模板
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