为什么Spark不会将工作分配给所有执行人员,而只是分配给一名执行人员?

我的Spark群集有1个主机和3个工人(在4个独立机器上,每台机器有1个内核),其他设置如下图所示,其中spark.cores.max设置为3spark.executor.cores也是3图1

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

由于我已经将最大核心数设置为3,所有执行者都不应该用于这项工作吗?

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

非常感谢。

------------------图-1火花设置

------------------图-2在这里输入图像描述


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

你使用哪种火花版本?

根据我的经验,如果您使用除文件接收器以外的任何接收器,则它将永久占用1个内核。 所以当你说你有2个接收器时,那么2个内核将被永久用于接收数据,所以你只剩下1个正在做这项工作的内核。

请发布Spark主页的页面截图。 和Job的Streaming页面截图。


在火花传输中,只有1个接收器被启动,以便将数据从输入源传送到RDD。

在第一次转换后重新分区数据可以增加并行性。

链接地址: http://www.djcxy.com/p/26349.html

上一篇: why Spark is not distributing jobs to all executors, but to only one executer?

下一篇: ANTLR4 and the Python target