spark Executor啟動過程分析

2021-10-03 05:33:20 字數 1026 閱讀 3140

本篇文章將以問答的方式對executor的啟動進行分析。

首先會尋找可用的 worker 節點來啟動 executor , 所謂可用就是前面提到的executor在worker上啟動的條件

worker 節點資源分配是按照如下規則進行的:

過濾不可用的work,輪詢可用的work

分配給 executor 所需的 cpu 核數,即你指定的--executor-cores, 以及記憶體,即你指定的--executor-memory

如果spark.deploy.spreadout指定為true,在進行一次分配後將繼續分配下乙個可用的work。 否則,會繼續在該 work 上進行資源分配,直到該work資源全部分配完。 才會繼續去尋找下乙個可用work

重複1 到 3.直到滿足該任務需要的資源,或者集群資源消耗完。

在某一集群中有4 個 worker 節點,每個節點擁有16個 cpu 核數, 其中設定了spark.cores.max = 48spark.executor.cores = 16, 如果spark.deploy.spreadout = true,按照每次分配 1 個cpu 核數, 則每個 worker 節點的 executor 將分配到 12 個 cpu 核數, 就達到了應用限制的最大核數48, 但卻沒有滿足executor啟動的最小cores 16, 所以將沒有 executor 能夠啟動,參見 spark -8881問題說明。 而在後續版本中,每次分配 cpu 核數為 executor 指定的 cpu 核數, 如果沒有指定預設情況為1,這樣在前面的例子中, 按照該分配方式將在3 個 worker 節點中的 executor 分配16個 cpu 核數, 這樣就能夠正常啟動 executor 。

通過以上幾個問題,大概也能了解到 executor 在worker端啟動的整個流程了, 本文主要是從原始碼角度挖掘的資訊,如有不對的地方,麻煩指出,謝謝!

Spark Executor 執行Task的過程

前言 前面分析了task scheduler劃分task的過程,task在task schedulerimpl類中被包裝成stagetasksets,然後由driverendpoint傳送,最後由coarsegrainedschedulerbackend序列化並啟動executor。現在開始分析ex...

冷啟動 熱啟動

冷啟動 1 接通電源啟動計算機的方式,稱為冷啟動。2 介紹 自檢 3 具體操作步驟如下 加電 自檢 引導作業系統。熱啟動 1 熱啟動是指在計算機已經開啟的狀態下,通過鍵盤重新引導作業系統。一般在宕機時才使用。2 方法 左手按住 ctrl 和 alt 不放開,右手按下 del 然後同時放開。3 熱啟動...

啟動mysql 啟動 MySQL

禁止碼迷,布布扣,豌豆 碼農教程,愛碼網等第三方爬蟲 爬取!登入 mysql 首先我們先把 mysql 服務執行起來,接下來我們肯定是迫不及待想操作下 mysql 了,但是我們不能直接這麼做。mysql 和客戶機 伺服器 dbms一樣,就類似於登入 qq,在進入程式進行操作前必須得登入到 dbms ...