Spark RDD的執行機制 工作節點分布關係

2021-10-14 18:33:45 字數 945 閱讀 7628

1.分割槽及分割槽與工作結點(worker node)的分布關係

• 通俗點來講,可以將 rdd 理解為乙個分布式物件集合,本質上是乙個唯讀的分割槽記錄集合。每個 rdd可以分成多個分割槽,每個分割槽就是乙個資料集片段。

乙個 rdd 的不同分割槽可以儲存到集群中的不同結點上,從而可以在集群中的不同結點上進行並行計

2.rdd 執行過程:

rdd 的典型的執行過程如下:

讀入外部的資料來源(或者記憶體中的集合)進行 rdd 建立;rdd 經過一系列的 「轉換」 操作,每一次都會產生不同的 rdd,供給下乙個轉換使用;最後乙個 rdd 經過 「行動」 操作進行處理,並輸出指定的資料型別和值。rdd 採用了惰性呼叫,即在 rdd 的執行過程中,所有的轉換操作都不會執行真正的操作,只會記錄依賴關係,而只有遇到了行動操作,才會觸發真正的計算,並根據之前的依賴關係得到最終的結果。

下面以乙個例項來描述 rdd 的實際執行過程,如下圖所示,開始從輸入中建立了兩個 rdd,分別是 a 和 c,然後經過一系列的轉換操作,最終生成了乙個 f,這也是乙個 rdd。注意,這些轉換操作的執行過程中並沒有執行真正的計算,基於建立的過程也沒有執行真正的計算,而只是記錄的資料流向軌跡。當 f 執行了行為操作並生成輸出資料時,spark 才會根據 rdd 的依賴關係生成有向無環圖(dag),並從起點開始執行真正的計算。正是 rdd 的這種惰性呼叫機制,使得轉換操作得到的中間結果不需要儲存,而是直接管道式的流入到下乙個操作進行處理。

1.5. rdd 執行過程

通過上述對 rdd 概念、依賴關係和階段劃分的介紹,結合之前介紹的 spark 執行基本流程,這裡再總結一下 rdd 在 spark 架構中的執行過程(如下圖所示):

建立 rdd 物件;sparkcontext 負責計算 rdd 之間的依賴關係,構建 dag;dagschedule 負責把 dag 圖反向解析成多個階段,每個階段中包含多個任務,每個任務會被任務排程器分發給工作節點上的 executor 上執行。

WF工作流執行機制

1 workflowruntime.startruntime 啟動wf執行時。2 workflowruntime.createworkflow 返回新建立的wf工作流例項。此方法為新建的wf工作流例項準備了乙個排程器和排程器工作佇列。這個方法返回時,wf工作流中的所有活動都處於initialized...

session執行機制

session機制是一種伺服器端的機制,伺服器使用一種類似於雜湊表 的結構 也可能就是使用 雜湊表 來儲存資訊。當程式需要為某個客戶端的請求建立乙個session的時候,伺服器首先檢查這個客戶端的請求裡是否已包含了乙個session標識 稱為sessionid,如果已包含乙個sessionid則說明...

try catch finally執行機制

finally的執行 如下的程式所示,注釋中是執行的順序 public class test public static string test finally public static string test1 finally其實是僅在return 語句執行前執行,如果return 乙個函式,那...