为什么Spark不会将工作分配给所有执行人员,而只是分配给一名执行人员?
我的Spark群集有1个主机和3个工人(在4个独立机器上,每台机器有1个内核),其他设置如下图所示,其中spark.cores.max设置为3 , spark.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?