簡體   English   中英

Spark執行器和任務並發

[英]Spark executor & tasks concurrency

在Spark中,執行者可以同時運行許多任務,可能是2或5或6。

Spark如何計算(或計算)在同一執行程序中要同時執行的任務數,即在一個執行程序中可以同時執行多少個任務?

一個執行程序可能正在執行一個任務,但是又可能要放置一個任務以在同一執行程序上同時運行? 這樣做的標准是什么?

執行程序具有固定數量的內核和內存。 由於我們未在Spark中為任務指定內存和內核要求,因此如何計算執行程序中可以同時運行多少個?

執行程序中並行運行的任務數=配置的內核數。 您始終可以通過配置更改此數字。 執行程序總體上(並行或順序)執行的任務總數取決於創建的任務總數(通過拆分數)和執行程序數目。

在一個執行程序中運行的所有任務共享配置的相同內存。 在內部,它只啟動與內核數量一樣多的線程。

一個最可能的問題可能是您正在處理的RDD中的分區偏斜。 如果2-6個分區上有大量數據,則為了減少網絡上的數據混洗,Spark將嘗試讓執行者處理本地駐留在其自己節點上的數據。 因此,您將看到2-6個執行器工作了很長時間,而其他執行器將在幾毫秒內完成數據的處理。

您可以在這個stackoverflow問題中找到更多有關此的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM