为什么我的火花流工作有这么多的任务

时间:2015-05-09 15:59:32

标签: apache-spark spark-streaming

enter image description here

我想知道为什么我的火花流工作中有这么多任务编号?它变得越来越大......

3.2小时后'跑步,它长到120020 ......经过一天的运行,它会增长到一百万......为什么?

3 个答案:

答案 0 :(得分:2)

SparkUI功能意味着某些阶段依赖项可能已经计算过,但是已被跳过,因为它们的输出已经可用。因此它们显示为skipped

请不要might,这意味着在作业完成之前Spark不确定是否需要返回并重新计算最初跳过的某些阶段。

[1] https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/ui/jobs/JobProgressListener.scala#L189

答案 1 :(得分:1)

流式应用程序的本质是随着时间的推移对每批数据运行相同的过程。看起来你试图以1秒的批处理间隔运行,每个间隔可能产生几个作业。您在3.2小时内显示585个作业,而不是120020.但是,它看起来有点像您的处理完成无处不在1秒。我想你的调度延迟非常高。这是一个批次间隔太小的症状,我猜。

答案 2 :(得分:1)

我强烈建议您检查参数 spark.streaming.blockInterval ,这是一个非常重要的参数。默认情况下为0.5秒,即每0.5秒创建一个任务。

所以也许你可以尝试将 spark.streaming.blockInterval 增加到1分钟或10分钟,然后任务数量应该减少。

我的直觉仅仅是因为你的消费者和生产者一样快,所以随着时间的推移,越来越多的任务被积累以供进一步消费。

这可能是由于您的Spark群集无法处理如此大的批次。它也可能与检查点间隔时间有关,也许您将其设置得太大或太小。它也可能与您的并行分区数据位置等设置有关。

祝你好运

阅读本文

  

Tuning Spark Streaming for Throughput

  

How-to: Tune Your Apache Spark Jobs (Part 1)

  

How-to: Tune Your Apache Spark Jobs (Part 2)