繁体   English   中英

SPARK_WORKER_CORES设置如何影响Spark Standalone中的并发性

[英]How SPARK_WORKER_CORES setting impacts concurrency in Spark Standalone

我正在使用在独立模式下配置的Spark 2.2.0群集。 集群有2个八核核心机器。 此集群专门用于Spark作业,没有其他进程使用它们。 我有大约8个Spark Streaming应用程序在这个集群上运行。
我明确地将SPARK_WORKER_CORES(在spark-env.sh中)设置为8,并使用total-executor-cores设置为每个应用分配一个核心。 此配置降低了在多个任务上并行工作的能力。 如果一个阶段在具有200个分区的分区RDD上工作,则一次只执行一个任务。 我希望Spark做的是为每个作业和进程并行启动单独的线程。 但我找不到单独的Spark设置来控制线程数。
所以,我决定在每台机器上玩耍并将核心数量(即spark-env.sh中的SPARK_WORKER_CORES)增加到1000。 然后我为每个Spark应用程序提供了100个内核。 我发现此时火花开始并行处理100个分区,表明正在使用100个线程。
我不确定这是否是影响Spark作业使用的线程数的正确方法。

你混淆了两件事:

  • 群集管理器属性 - SPARK_WORKER_CORES - 工作人员可以提供的核心总数。 用它来控制Spark总共应该使用的一小部分资源
  • 应用程序属性--total-executor-cores / spark.cores.max - 来自集群管理器的应用程序请求的核心数。 使用它控制应用内并行性。

只有第二个是直接负责app并行,只要第一个不限制。

Spark中的CORE也是线程的同义词。 如果你:

使用total-executor-cores设置为每个应用程序分配一个核心。

然后你专门分配一个数据处理线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM