【发布时间】:2019-01-07 00:17:49
【问题描述】:
我有一个 SparkStreaming 应用程序从 kafka 读取消息,所有任务流程数据的位置为 process_local。 当 executor 0 中有任务挂起时,推测生效并在其他 executor 中重新运行任务(见下图)
待处理的 img : https://imgchr.com/i/FWWMDS
但是我发现推测生效后没有任务会分配给executor 0,并且数据位置从process_local更改为any,这导致更多时间来调度任务
执行者丢失 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 并将数据本地性从 any 恢复到 process_local?
为什么任务不再分配给执行者 0?
【问题讨论】:
-
我还不知道任务挂起的原因,但我找到了解决方案,请参阅issues.apache.org/jira/browse/SPARK-18761
标签: apache-spark spark-streaming