--master local[n] 和 --total-executor-core = n (Spark Standal



我有一个 Spark 独立集群,有 4 个节点,每个节点有 56 个核心

当我用--master local[56]master --spark://... --executor-cores 56 --total-executor-cores 56运行相同的工作时(我认为这是相同的(

我发现他们的表现不同,而后者的表现更好。这两种spark-submit有什么区别?

这两种火花提交有什么区别?

--master local[56]使用具有 56 个线程的单个 JVM 作为执行程序。

--master spark://...使用 Spark 独立群集,该群集可能在执行spark-submit的同一台计算机上运行,也可能不在运行。该群集可能有多个分布式节点,也可能没有,每个节点都有一个或多个 CPU。

--total-executor-cores NUM用于所有执行程序的总核心数。它没有说明单个 Spark 应用程序获得多少个执行程序(节点(。它可能是一个,但也可以是数十个或更多(每个都有未知数量的 CPU(。您知道的是此 Spark 应用程序的 CPU 内核总数。

--executor-cores NUM表示每个执行程序的核心数。(默认值:独立模式下辅助角色上的所有可用内核(。

最后一个选项需要解释执行者和工作人员之间的区别。

执行程序是由工作线程托管的 JVM 进程。执行程序负责执行代表 Spark 应用程序的任务。辅助角色是 Spark 独立群集的一部分。

您可能有 10 个执行人和 1 个工作人员,或者 1 个执行人和 10 个工作人员。在整个 Spark 独立群集中可用的 20 个 CPU 内核中,也可以为 Spark 应用程序提供 10 个 CPU 内核。这是为了让其他 Spark 应用程序spark-submit到群集以共享工作负载。


有人可能会问:

所以根据这似乎--total-executor-cores等于--executor-cores,那么我们可以只有 1 个执行器,因此只会为 Spark 作业激活一个节点

--total-executor-cores是每个 Spark 应用程序的 CPU 内核总数,而--executor-cores是 Spark 应用程序的每个执行程序的 CPU 内核数。

换句话说,--total-executor-cores通常大于--executor-cores,但它们也可能是相同的(例如,只有一个工作线程和一个执行者(。

最新更新