为什么 Spark 不将作业分配给所有执行者,而是只分配给一个执行者?
why Spark is not distributing jobs to all executors, but to only one executer?
我的Spark集群有1个master和3个worker(分别在4台机器上,每台机器1核),其他设置如下图,其中spark.cores.max设置为3,spark.executor.cores也设置为3(在pic-1)
但是当我将作业提交到 Spark 集群时,从 Spark web-UI 我可以看到只使用了一个执行程序(根据 已用内存 和 RDD blocks in pic-2),但不是所有的执行者。在这种情况下,处理速度比我预期的要慢得多。
既然我把最大核心设置为3,难道所有的executor都不应该用来做这个工作吗?
如何配置 Spark 将当前作业分配给所有执行器,而不是只有一个执行器 运行 当前作业?
非常感谢。
-----------------图1:
-----------------图2:
在 spark streaming 中只启动了 1 个接收器,从输入源获取数据到 RDD。
在第一次转换后重新分区数据可以提高并行度。
你说你是运行两个Receiver,他们是什么Receiver(Kafka, Hdfs, Twitter ??)
您使用的是哪个 spark 版本?
根据我的经验,如果您使用除文件接收器以外的任何接收器,那么它将永久占用 1 个内核。
所以当你说你有 2 个接收器时,2 个核心将永久用于接收数据,所以你只剩下 1 个核心在做这项工作。
请post Spark 大师主页截图。以及 Job 的 Streaming 页面截图。
我的Spark集群有1个master和3个worker(分别在4台机器上,每台机器1核),其他设置如下图,其中spark.cores.max设置为3,spark.executor.cores也设置为3(在pic-1)
但是当我将作业提交到 Spark 集群时,从 Spark web-UI 我可以看到只使用了一个执行程序(根据 已用内存 和 RDD blocks in pic-2),但不是所有的执行者。在这种情况下,处理速度比我预期的要慢得多。
既然我把最大核心设置为3,难道所有的executor都不应该用来做这个工作吗?
如何配置 Spark 将当前作业分配给所有执行器,而不是只有一个执行器 运行 当前作业?
非常感谢。
-----------------图1:
-----------------图2:
在 spark streaming 中只启动了 1 个接收器,从输入源获取数据到 RDD。
在第一次转换后重新分区数据可以提高并行度。
你说你是运行两个Receiver,他们是什么Receiver(Kafka, Hdfs, Twitter ??)
您使用的是哪个 spark 版本?
根据我的经验,如果您使用除文件接收器以外的任何接收器,那么它将永久占用 1 个内核。 所以当你说你有 2 个接收器时,2 个核心将永久用于接收数据,所以你只剩下 1 个核心在做这项工作。
请post Spark 大师主页截图。以及 Job 的 Streaming 页面截图。