为什么Spark不向所有执行者分配工作,而只向一个执行者分配工作?

key*_*int 7 performance configuration distributed-computing apache-spark spark-streaming

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

但是,当我提出我的工作,星火产业集群,从星火网络的用户界面,我可以看到只有一个执行程序用于(根据使用的内存RDD块PIC-2 ),但不是所有的执行者.在这种情况下,处理速度比我预期的要慢得多.

由于我将max cores设置为3,所以不应该将所有执行程序都用于此工作吗?

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

非常感谢.

------------------ pic-1: 火花设置

------------------ pic-2: 在此输入图像描述

Lok*_*r P 2

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

您使用的是哪个 Spark 版本?

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

请同时发布 Spark master 主页截图。以及 Job 的 Streaming 页面截图。

  • 你好@lokesh-kumar-p,很抱歉这么晚回复。我尝试了你的想法,你是对的,它与接收器有关。非常感谢:P (2认同)