集群中各节点之间的执行器分布

问题描述 投票:0回答:1

Spark 应用程序的执行器如何分布在集群的节点上?假设 Spark 以集群模式运行,YARN 作为管理器。据说该集群有 6 个节点,每个节点 16 个核心,内存为 64GB。通过以下配置,执行器如何分布在集群中:

--num-executors 10 --executor-cores 4 --executor-memory 16G

apache-spark pyspark apache-spark-sql
1个回答
0
投票

首先需要澄清术语

节点 - 是物理机,例如

r6g.2xlarge
在 AWS 中

spark 执行器 - 是您通过 Spark 配置设置的虚拟机

核心 - 是最小的计算单元

spark 执行器配置(

--executor-cores
--executor-memory
)不能超过物理节点规格,例如如果您的物理节点只有
--executor-cores 32
核心
,则无法指定 
16

随您配置

--num-executors 10 --executor-cores 4 --executor-memory 16G

您将得到 10 个执行器,每个执行器有 4 个核心和 16G 内存

这意味着对于 1 个核心 - 您分配 4GB 内存

您总共将拥有 4 * 10 = 40 个核心

当您提交 Spark 作业时 - 执行 dag 被构建。它分为工作、阶段、任务。

1 个任务将由 1 个执行器核心运行

假设您在 Spark 中有下一个代码

spark.read.parquet(...).repartition(200).write.mode(override).parquet(...)

重新分区后,Stage 中将有 200 个任务

您有 40 个可用核心,可以并行运行这 200 个任务

如果分区分布相同且物理机相同,我们可以预期每个核心将依次执行 5 个任务

© www.soinside.com 2019 - 2024. All rights reserved.