gpt4 book ai didi

java - Apache Spark 中的执行器和核心

转载 作者:行者123 更新时间:2023-12-01 18:28:18 25 4
gpt4 key购买 nike

我对 Spark 有点陌生,并试图理解一些术语。 (无法理解使用在线资源)

请先用以下条款验证我:

执行者:其container or JVM process它将在 worker node or data node 上运行。每个节点可以有多个执行器。

核心:它是 container or JVM process 中的一个线程运行于 worker node or data node 。每个执行器可以有多个核心或线程。

以上两个概念如有错误,请指正。

问题:

  1. 当我们提交 Spark 作业时,这意味着什么?我们是否正在交将我们的工作交给 Yarn 或资源管理器,它们将分配资源到我的application or job在集群中并执行该操作?它的理解正确吗..?
  2. 在spark集群中提交作业的命令中,有一个选项设置执行者的数量。

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

那么这些执行器+核心的数量将在每个节点上设置?如果不是,那么我们如何设置每个节点的具体核心数?

最佳答案

您的所有假设都是正确的。有关集群架构的详细说明,请参阅 this关联。您会得到清晰的图片。关于你的第二个问题,执行器数量是针对整个集群的。计算方法如下:

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

例如,假设您有一个 4 核机器的 20 节点集群,并且您提交了一个带有 -executor-memory 1G 和 --total-executor-cores 8 的应用程序。那么 Spark 将启动 8 个执行器,每个执行器具有 1 GB RAM,在不同的机器上。 Spark 默认情况下这样做是为了让应用程序有机会实现在同一台机器上运行的分布式文件系统(例如 HDFS)的数据局部性,因为这些系统的数据通常分布在所有节点上。

希望对您有帮助!

关于java - Apache Spark 中的执行器和核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60200638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com