Spark(六) Spark計算模型

2021-07-02 15:27:30 字數 2453 閱讀 1729

整個spark框架都是基於rdd運算元來進行計算的。

what is rdd?

resilient distributed dataset(rdd),分布式彈性資料集,是spark上的乙個核心抽象

表示用於平行計算的,不可修改的,對資料集合進行分片的資料結構

簡單地,可以將rdd看成是spark平台上的通用貨幣

在spark上,針對各種各樣的計算場景存在著各種各種的rdd,這些rdd擁有一些共同的操作,例如map,filter,persist等,就好像rdds都是乙個總rdd的子類一樣,擁有所有rdd的共同特性

同時rdds也擁有能表達自己特性的操作,例如pairrddr有groupbykey,join等操作,而doublerdd有doubles操作

所有的rdd都有以下特性:

可以表示資料分片的列表集合。將原始資料經過某些分片處理生成rdds,這些rdd將用於平行計算

通用的運算元來計算每個資料分片

包括transformation和action兩大運算元類別。

rdd之間擁有依賴關係

transformation只對資料進行處理而不計算,處理過程會被畫成乙個dag有向無迴圈圖,只有當action操作要獲取結果時,才根據dag圖來進行平行計算。

dag圖會根據rdd之間的依賴關係被分解成乙個個stage之後提交

形成dag圖的過程中也會根據rdd之間的依賴關係形成lineage以下兩張圖是**自網路的

spark中部分rdd類的截圖

transformation和action操作的function截圖

除了transformation和action兩大類運算元之外,rdd還有乙個比較特殊的運算元

如persist和checkpoint,它們既不屬於transformation也不屬於action

但是都會觸發job的執行

persist將rdd結果持久化,修改了rdd中meta info的儲存級別

checkpoint在持久化rdd的同時還切斷了rdd之間的依賴血緣關係。除了修改了儲存級別,還修改了meta info中rdd的lineage依賴關係

兩者返回的均是修改後的rdd而不是產生的rdd(transformation是產生新的rdd,action是對rdd取結果)

rdd之間的依賴關係可以分為narrow,wide:窄依賴和寬依賴兩種

窄依賴:子rdd中的每個資料塊只依賴於父rdd中對應的有限個固定的資料塊,可以理解成父子rdd是一對一或者多對一的關係,例如:map變換,前後的資料都是一行對一行的。乙個子rdd可以根據其父rdd直接計算得出,因而子rdd出現計算錯誤的時候,只需要重新計算對應的父rdd即可

寬依賴:子rdd中的乙個資料塊可以依賴於父rdd中的所有資料塊。即一對多的情況,例如:groupbykey變換,子rdd中的資料塊會依賴於多個父rdd中的資料塊,因為乙個key可能存在于父rdd的任何乙個資料塊中 。寬依賴中的子rdd要等到所有的父rdd計算完成之後才能進行計算,當資料丟失時需要對所有祖先rdd進行重新計算

依賴關係圖:

其中,寬依賴是會觸發shuffle行為的

而shuffle操作可以減小集群之間網路傳輸的壓力,對資料進行一定的提前處理工作,對於提高整個集群的處理效能是十分重要的

在spark中shuffle操作會是將dag圖劃分成乙個個stage的起點

如圖所示:

map和union是屬於transformation操作的。這裡會涉及到乙個pipeline的概念,對資料切片之後並行協同計算,從圖中我們可以看到,map和union的時候task之間的處理是並行的,而協同體現在當某個task計算緩慢的時候,集群會啟動乙個新的節點來計算該task,哪個節點先處理完畢就採用哪個節點的結果

groupby和join操作是產生rdd之間的寬依賴的,這是乙個shuffle過程,也是觸發劃分stages的起點,如上圖中的三個stage

從物理的角度看rdd其實是乙個元資料結構,儲存著block和node之間的對映關係

關於spark的transformation,action和劃分stage等過程都是怎麼處理的,整個作業的處理流程是什麼,請看:

spark(四) – spark核心作業排程機制

Spark計算模型

rdd resilient distributed dateset 叫做彈性分布式資料集,是spark中最基本的資料抽象,它代表乙個不可變 可分割槽 裡面的元素可平行計算的集合。rdd具有資料流模型的特點 自動容錯 位置感知性排程和可伸縮性。rdd之間存在依賴關係,可進行恢復,rdd代表的資料集可以...

Spark 模型總結

註明 以及相關資料均來自scalable machine learning from berkelyx,只是個人總結使用,侵權即刪 mr的價值體現在對大資料集的分布式處理上。如下面的圖例 來自scalable machine learning from berkelyx 將大規模的文件先分開成不同的...

Spark資源模型

spark作業執行圖 1.使用spark submit提交乙個spark應用,這個應用 作業會啟動乙個對應的driver程序,這個driver會根據提交模式的不同,可能在本地啟動 client 也可能在集群中某個工作節點 cluster 上啟動。driver服務程序啟動,會根據我們設定的引數,占用一...