簡體   English   中英

Apache Spark 中的執行器和內核

[英]Executors and cores in Apache Spark

我對 Spark 有點陌生,並試圖理解幾個術語。 (無法理解使用在線資源)

請首先使用以下條款驗證我:

Executor:它的container or JVM process ,將在worker node or data node上運行。 每個節點可以有多個 Executor。

核心:它是在worker node or data node上運行的container or JVM process的線程。 每個執行器可以有多個內核或線程。

如果以上兩個概念有誤,請指正。

問題:

  1. 當我們提交 spark job 時,這意味着什么? 我們是否將我們的工作交給 Yarn 或資源管理器,后者會將資源分配給我的application or job集群中的application or job並執行它? 它的正確理解..?
  2. 在用於在 Spark 集群中提交作業的命令中,有一個選項可以設置執行程序的數量。

    spark-submit --class <CLASS_NAME> --num-executors ? --executor-cores ? --executor-memory ? ....

那么每個節點將設置這些數量的執行器 + 內核嗎? 如果不是,那么我們如何設置每個節點的特定內核數?

你所有的假設都是正確的。 有關集群架構的詳細說明,請訪問鏈接。 你會得到清晰的畫面。 關於你的第二個問題,num-of-executors 是針對整個集群的。 計算如下:

num-cores-per-node * total-nodes-in-cluster

例如,假設您有一個 20 節點的集群和 4 核機器,並且您提交了一個帶有 -executor-memory 1G 和 --total-executor-cores 8 的應用程序。那么 Spark 將啟動 8 個 executor,每個 1GB RAM,在不同的機器上。 Spark 默認這樣做是為了讓應用程序有機會為運行在同一台機器上的分布式文件系統(例如 HDFS)實現數據本地化,因為這些系統通常將數據分布在所有節點上。

我希望它有幫助!

暫無
暫無

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

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