Spark的Driver節點和Executor節點

2022-05-04 01:33:11 字數 1529 閱讀 5755

**自:

1.驅動器節點(driver)

spark的驅動器是執行開發程式中的 main方法的程序。它負責開發人員編寫的用來建立sparkcontext、建立 rdd,以及進行 rdd 的轉化操作和行動操作**的執行。如果你是用spark shell,那麼當你啟動 spark shell的時候,系統後台自啟了乙個 spark 驅動器程式,就是在spark shell 中預載入的乙個叫作 sc 的 sparkcontext 物件。如果驅動器程式終止,那麼spark 應用也就結束了。

driver在spark作業執行時主要負責以下操作:

1)把使用者程式轉為任務

driver程式負責把使用者程式轉為多個物理執行的單元,這些單元也被稱為任務(task)。從上層來看,spark程式的流程是這樣的:讀取或者轉化資料建立一系列 rdd,然後使用轉化操作生成新的rdd,最後使用行動操作得到結果或者將資料儲存到檔案儲存系統中。spark 程式其實是隱式地建立出了乙個由上述操作組成的邏輯上的有向無環圖。當driver序執行時,它會把這個邏輯圖轉為物理執行計畫。

spark 會對邏輯執行計畫作一些優化,比如將連續的對映轉為流水線化執行,將多個操作合併到乙個步驟中等。這樣 spark 就把邏輯計畫轉為一系列步驟(stage)。而每個stage又由多個task組成。這些task會被打包並送到集群中。task是 spark 中最小的執行單元,使用者程式通常要啟動成百上千的獨立任務。

2)跟蹤executor的執行狀況

有了物理執行計畫之後,driver程式必須在各個executor程序間協調任務的排程。executor程序啟動後,會向driver程序註冊自己。因此,driver程序就可以跟蹤應用中所有的executor節點的執行資訊。

3)為執行器節點排程任務

driver程式會根據當前的executor節點集合,嘗試把所有task基於資料所在位置分配給合適的executor程序。當task執行時,executor程序會把快取資料儲存起來,而driver程序同樣會跟蹤這些快取資料的位置,並且利用這些位置資訊來排程以後的任務,以儘量減少資料的網路傳輸。

4)ui展示應用執行狀況

driver程式會將一些 spark 應用的執行時的資訊通過網頁介面呈現出來,預設在埠4040 上。比如,在本地模式下,訪問 http://localhost:4040 就可以看到這個網頁了。

2.執行器節點(executor)

spark executor節點是乙個工作程序,負責在 spark 作業中執行任務,任務間相互獨立。spark 應用啟動時,executor節點被同時啟動,並且始終伴隨著整個 spark 應用的生命週期而存在。如果有executor節點發生了故障或崩潰,spark 應用也可以繼續執行,會將出錯節點上的任務排程到其他executor節點上繼續執行。

執行器程序有兩大作用:

1、它們負責執行組成 spark 應用的任務,並將結果返回給驅動器程序;

2、它們通過自身的塊管理器(block manager)為使用者程式中要求快取的 rdd 提供記憶體式儲存。rdd 是直接快取在executor程序內的,因此任務可以在執行時充分利用快取資料加速運算。

執行器程式通常都執行在專用的程序中。

driver 和 firmware 的區別

驅動和韌體 firmware 都是 前者為軟體服務,後者為硬體服務。在作業系統概念還不明確的時代,二者是沒有明顯區別的。但是隨著計算機體系結構的發展,硬體的種類開始變多,作業系統的種類也變多了。這個時候,因為各種技術的 商業的原因,硬體廠商希望自己的硬體能被更多的軟體廠商使用,所以就需要在硬體之上做...

driver的註冊流程

本文是基於mini2440開發板linux版本號是linux 2.6.32.2的學習筆記 一.device driver結構體描述struct device driver 二.註冊乙個driver 註冊driver呼叫的函式是 driver register int driver register ...

Spark單節點docker適配

1 docker搭建spark 2 docker compose安裝 step1 curl luname s uname m usr local bin docker compose step2 chmod x usr local bin docker compose 3 docker compos...