SparkStreaming架構和執行機制詳解

2021-12-30 07:56:40 字數 2599 閱讀 9700

本期內容:

1. spark streaming架構

2.spark streaming執行機制

spark大資料分析框架的核心部件:sparkcore、spark streaming流計算、graphx圖計算、mllib機器學習、spark sql、tachyon檔案系統、sparkr計算引擎等主要部件.

sparkstreaming 其實是構建在spark core之上的乙個應用程式,要構建乙個強大的spark應用程式 ,spark streaming是乙個值得借鑑的參考,spark streaming涉及多個job交叉配合,基本涉及到了spark的所有的核心元件,精通掌握spark streaming是至關重要的。

spark streaming基礎概念理解:

1. 離散流:(discretized stream ,dstream):這是spark streaming對內部的持續的實時資料流的抽象描述,也即我們處理的乙個實時資料流,在spark streaming中對應乙個dstream;

2. 批資料:將實時流時間以時間為單位進行分批,將資料處理轉化為時間片資料的批處理;

3. 時間片或者批處理時間間隔:邏輯級別的對資料進行定量的標準,以時間片作為拆分流資料的依據;

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;

spark core處理的每一步都是基於rdd的,rdd之間有依賴關係。下圖中的rdd的dag顯示的是有3個action,會觸發3個job,rdd自下向上依賴,rdd產生job就會具體的執行。從dsteam graph中可以看到,dstream的邏輯與rdd基本一致,它就是在rdd的基礎上加上了時間的依賴。rdd的dag又可以叫空間維度,也就是說整個spark streaming多了乙個時間維度,也可以成為時空維度。

從這個角度來講,可以將spark streaming放在座標系中。其中y軸就是對rdd的操作,rdd的依賴關係構成了整個job的邏輯,而x軸就是時間。隨著時間的流逝,固定的時間間隔(batch interval)就會生成乙個job例項,進而在集群中執行。

對於spark streaming來說,當不同的資料**的資料流進來的時候,基於固定的時間間隔,會形成一系列固定不變的資料集或event集合(例如來自flume和kafka)。而這正好與rdd基於固定的資料集不謀而合,事實上,由dstream基於固定的時間間隔行程的rdd graph正是基於某乙個batch的資料集的。

從上圖中可以看出,在每乙個batch上,空間維度的rdd依賴關係都是一樣的,不同的是這個五個batch流入的資料規模和內容不一樣,所以說生成的是不同的rdd依賴關係的例項,所以說rdd的graph脫胎於dstream的graph,也就是說dstream就是rdd的模板,不同的時間間隔,生成不同的rdd graph例項。

從原始碼解讀dstream :

從這裡可以看出,dstream就是spark streaming的核心,就想spark core的核心是rdd,它也有dependency和compute。更為關鍵的是下面的**:

這是乙個hashmap,以時間為key,以rdd為value,這也正應證了隨著時間流逝,不斷的生成rdd,產生依賴關係的job,並通過jbscheduler在集群上執行。再次驗證了dstream就是rdd的模版。

dstream可以說是邏輯級別的,rdd就是物理級別的,dstream所表達的最終都是通過rdd的轉化實現的。前者是更高階別的抽象,後者是底層的實現。dstream實際上就是在時間維度上對rdd集合的封裝,dstream與rdd的關係就是隨著時間流逝不斷的產生rdd,對dstream的操作就是在固定時間上操作rdd。

總結:在空間維度上的業務邏輯作用於dstream,隨著時間的流逝,每個batch interval形成了具體的資料集,產生了rdd,對rdd進行transform操作,進而形成了rdd的依賴關係rdd dag,形成job。然後jobscheduler根據時間排程,基於rdd的依賴關係,把作業發布到spark cluster上去執行,不斷的產生spark作業。

Spark Streaming入門詳解

背景 使用spark主要是使用spark streaming,spark streaming的魔力之所在於 1.流式處理,如今是乙個流處理時代,一切與流不相關的都是無效的資料。3.spark streaming本身是乙個程式,spark streaming在處理資料的時候會不斷感知資料。所以對構建複...

Spark Streaming 程式監控

官網中指出,spark中專門為sparkstreaming程式的監控設定了額外的途徑,當使用streamingcontext時,在web ui中會出現乙個 streaming 的選項卡,在此選項卡內,統計的內容展示如下 這其中包括接受的記錄數量,每乙個batch內處理的記錄數,處理時間,以及總共消耗...

spark streaming讀取kafka示例

spark streaming讀取kafka示例,其中 spark streaming優雅的關閉策略優化部分參考 如何管理spark streaming消費kafka的偏移量部分參考 spark向kafka中寫入資料部分參考 object demo 建立streamingcontext return...