【问题标题】:Spark Streaming: Application healthSpark Streaming:应用程序运行状况
【发布时间】:2016-06-12 02:49:44
【问题描述】:

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

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

  2. 大量Garbage collection 日志出现如下所示:

问题

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

【问题讨论】:

    标签: apache-spark garbage-collection performance-testing spark-streaming


    【解决方案1】:

    这真的取决于应用程序。我在调试此问题时的处理方式如下:

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

    我已经有相对复杂的 Spark Streaming 应用程序(Spark v1.6、v2.1.1、v2.2.0)运行了好几天,性能没有任何下降,所以肯定有一些可以解决的问题。

    【讨论】:

    • 对我来说,罪魁祸首是:'减少 UI 中保留批次的数量(spark.streaming.ui.retainedBatches 参数)'
    猜你喜欢
    • 2021-11-17
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 2017-05-02
    • 2017-04-02
    • 1970-01-01
    相关资源
    最近更新 更多