spark DAG的生成和劃分Stage

2021-10-04 20:04:27 字數 937 閱讀 4956

dag(directed acyclic graph有向無環圖)指的是資料轉換執行的過程,有方向,無閉環(其實就是rdd執行的流程)

原始的rdd通過一系列的轉換操作就形成了dag有向無環圖,任務執行時,可以按照dag的描述,執行真正的計算(資料被操作的乙個過程)

開始:通過sparkcontext建立的rdd

結束:觸發action,一旦觸發action就形成了乙個完整的dag

注意:乙個spark應用中可以有一到多個dag,取決於觸發了多少次action

乙個dag中會有不同的階段/stage,劃分階段/stage的依據就是寬依賴

乙個階段/stage中可以有多個task,乙個分割槽對應乙個task

乙個複雜的業務邏輯如果有shuffle,那麼就意味著前面階段產生結果後,才能執行下乙個階段,即下乙個階段的計算要依賴上乙個階段的資料。那麼我們按照shuffle進行劃分(也就是按照寬依賴就行劃分),就可以將乙個dag劃分成多個stage/階段,在同乙個stage中,會有多個運算元操作,可以形成乙個pipeline流水線,流水線內的多個平行的分割槽可以並行執行

對於窄依賴,partition的轉換處理在stage中完成計算,不劃分(將窄依賴盡量放在在同乙個stage中,可以實現流水線計算)

對於寬依賴,由於有shuffle的存在,只能在父rdd處理完成後,才能開始接下來的計算,也就是說需要要劃分stage(出現寬依賴即拆分)

spark會根據shuffle/寬依賴使用回溯演算法來對dag進行stage劃分,從後往前,遇到寬依賴就斷開,遇到窄依賴就把當前的rdd加入到當前的stage/階段中

具體的劃分演算法請參見amp實驗室發表的**

《resilient distributed datasets: a fault-tolerant abstraction for in-memory cluster computing》

vlan劃分和子網劃分的區別

1 網路劃分 1 子網劃分,對乙個網路進行子網劃分時,基本上就是將它分成小的網路。比如,當一組ip位址指定給乙個公司時,公司可能將該網路 分割成 小的網路,每個部門乙個。2 虛擬區域網 vlan 是一組邏輯上的裝置和使用者,裝置和使用者並不受物理位置的限制,可以根據功能 部門及應用等因素將它們組織起...

vlan 劃分和子網劃分的區別

1 網路劃分 1 子網劃分,對乙個網路進行子網劃分時,基本上就是將它分成小的網路。比如,當一組ip位址指定給乙個公司時,公司可能將該網路 分割成 小的網路,每個部門乙個。2 虛擬區域網 vlan 是一組邏輯上的裝置和使用者,裝置和使用者並不受物理位置的限制,可以根據功能 部門及應用等因素將它們組織起...

vlan劃分和子網劃分的區別

vlan劃分和子網劃分的區別 vlan是二層的,子網是三層的。vlan可以有很多種方式劃分,基於ip,基於埠甚至基於協議,而子網只能通過掩碼劃分。vlan能夠將廣播進行隔離,較子網具有更高的安全性。vlan是可以隔離廣播的。子網劃分不能隔離廣播 子網劃分就是通過借主機位來作為網路位,實現子網的劃分,...