火花推测在SparkStreaming中生效后,任务未分配给执行者

时间:2018-12-28 16:42:57

标签: apache-spark spark-streaming

我有一个SparkStreaming应用程序从kafka读取消息,所有任务处理数据的局部性为process_local。 当执行程序0中有待处理的任务时,推测将在其他执行程序中生效并重新运行该任务(请参见下图)

待处理的任务img:https://imgchr.com/i/FWWMDS

但是我发现,在推测生效之后,没有任务将分配给执行器0,并且数据局部性从process_local更改为任何执行器,这会导致更多时间来安排任务

执行者丢失了img:https://imgchr.com/i/FWW3Nj

集群执行器信息img:https://imgchr.com/i/FWWY3q

一些配置:

spark.speculation.interval  500ms
spark.scheduler.mode    FIFO
spark.streaming.kafka.maxRatePerPartition   100
spark.locality.wait 1s
spark.defalut.parallelism   6

如何使任务再次分配给执行者0,并将数据局部性从任何位置恢复到process_local?

为什么任务将不再分配给执行者0?

1 个答案:

答案 0 :(得分:0)

根本原因是程序中使用的kafka消费者lib版本,请改用kafka v0.10.2.1,请参见https://issues.apache.org/jira/browse/SPARK-20780