Apache Spark中的执行器和内核

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

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

请先使用以下条款验证我:

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

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

如果上述两个概念有误,请纠正我。

问题:

1]每当我们提交火花作业时,这意味着什么?我们是否要将工作移交给Yarn或资源管理器,后者将资源分配给群集中的我的application or job并执行该任务?它是正确的理解..?

2)在用于在Spark集群中提交作业的命令中,有一个选项可以设置执行者的数量。

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

因此,将在每个节点上设置这些数量的执行者+内核吗?如果不是,那么我们如何设置每个节点的特定核心数?

java apache-spark cluster-computing yarn
1个回答
0
投票

您所有的假设都是正确的。有关群集体系结构的详细说明,请通过this链接。您会得到清晰的画面。关于第二个问题,执行者数是整个集群的总和。计算公式如下:

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

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

希望对您有所帮助!

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