performance - 为什么 Spark 不将作业分配给所有执行程序,而是仅分配给一个执行程序?

标签 performance configuration apache-spark distributed-computing spark-streaming

我的 Spark 集群有 1 个 master 和 3 个 worker(在 4 台独立的机器上,每台机器有 1 个核心),其他设置如下图,其中 spark.cores.max 设置为 3 , 和 spark.executor.cores 还有 3 (在 pic-1 中)

但是当我将我的工作提交给 Spark 集群时,从 Spark web-UI 我可以看到只使用了一个执行程序(根据 使用的内存 RDD 块 in pic- 2 ),但不是所有的执行者。在这种情况下,处理速度比我预期的要慢得多。

既然我已经把最大核心数设置为 3,那么所有的执行者不应该都习惯这个工作吗?

如何配置 Spark 将当前作业分发给所有执行程序,而不是只有一个执行程序运行当前作业?

非常感谢。

------------------图片1 :
spark settings

------------------图片2 :
enter image description here

最佳答案

你说你正在运行两个接收器,它们是什么类型的接收器(Kafka、Hdfs、Twitter ??)

您使用的是哪个 Spark 版本?

根据我的经验,如果您使用文件接收器以外的任何接收器,那么它将永久占用 1 个核心。
因此,当您说您有 2 个接收器时,那么 2 个内核将永久用于接收数据,因此您只剩下 1 个正在执行工作的内核。

请同时发布 Spark master 主页屏幕截图。和 Job 的 Streaming 页面截图。

关于performance - 为什么 Spark 不将作业分配给所有执行程序,而是仅分配给一个执行程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30246963/

相关文章:

hadoop - Hive动态分区-Spark的并发写入会破坏数据

Android:浅堆和保留堆有什么区别

grails - Grails 3 中的拆分配置

sql - 如何让 Spark 处理更大的数据集?

apache-spark - 通过Web应用程序启动Spark应用程序的最佳实践?

c# - 在 app.config 中扩展键值对功能

php - 减少使用 jQuery UI 的页面的加载时间

android.os.MessageQueue.next 占用了多个独占时间——这是正常的行为吗?

asp.net-mvc - 在 asp.net-mvc 站点上优化 json 的最佳方法是什么

java - 在Log4j2中,是否可以根据键从记录器中过滤掉某些键值对?