簡體   English   中英

Spark 執行器、任務和分區

[英]Spark executors, tasks and partitions

隨着我不斷閱讀有關 Spark 架構和調度的在線資源,我開始變得更加困惑。 一個資源說: 一個階段中的任務數與該階段中最后一個RDD中的分區數相同 另一方面: Spark 將特定 Executor 上的任務數映射到分配給它的核心數 所以,第一個資源說如果我有 1000 個分區,那么無論我的機器是什么,我都會有 1000 個任務。 在第二種情況下,如果我有 4 核機器和 1000 個分區,那該怎么辦? 我會有4個任務? 那么數據是如何處理的呢?

另一個困惑: 每個工作人員一次只能處理一個任務,執行程序可以在其生命周期內並行和順序運行多個任務 那么任務是順序的還是並行的?

  • 任務數由 RDD/DataFrame 的分區數給出
  • 執行程序可以並行處理的任務數由其核心數給出,除非spark.task.cpus配置為 1 以外的值(這是默認值)

因此,將任務視為必須處理的一些(獨立)工作塊。 它們肯定可以並行運行

因此,如果您有 1000 個分區和 5 個執行程序,每個執行程序有 4 個核心,則通常會有 20 個任務並行運行

暫無
暫無

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

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