Spark Streaming:应用程序运行状况

Moh*_*itt 5 garbage-collection performance-testing apache-spark spark-streaming

我有一个Kafka基于Spark Streaming每5分钟运行一次的应用程序.查看运行5天后的统计数据,有一些观察结果:

  1. Processing time逐渐从30秒增加到50秒.快照如下所示,其中突出显示了处理时间图表: 快照

  2. Garbage collection出现了大量日志,如下所示: 快照

问题:

  1. 有没有一个很好的解释为什么Processing Time即使事件数量或多或少相同(在最后一个低谷期间)已大幅增加?
  2. GC logs在每个处理周期结束时,我差不多有70个.这是正常的?
  3. 是否有更好的策略来确保processing time以可接受的延迟保持?

Mic*_*tor 2

这实际上取决于应用程序。调试此问题时我的处理方法如下:

  1. 在“存储”选项卡下查看存储的大小是否没有增长。如果出现增长,则可能表明存在某种缓存资源泄漏。检查 的值是什么spark.cleaner.ttl,但最好确保在不再需要时取消缓存所有资源。
  2. 检查正在运行的作业的 DAG 可视化,并查看沿袭是否没有增长。如果是这种情况,请确保执行检查点以切断沿袭。
  3. 减少UI中保留的批次数量(spark.streaming.ui.retainedBatches参数)。
  4. 即使事件数量相同,请查看任务处理的数据量是否不随时间增长(阶段选项卡 -> 输入列)。这可能表明存在应用程序级别问题。

我的 Spark Streaming 应用程序(Spark v1.6、v2.1.1、v2.2.0)运行了几天,性能没有任何下降,因此肯定存在一些可解决的问题。