【问题标题】:Spark Structured Streaming resource contention / memory issueSpark Structured Streaming 资源争用/内存问题
【发布时间】:2019-03-17 11:59:42
【问题描述】:

我们有一个使用 mapGroupWithState 的 Spark 结构化流。经过一段时间的稳定处理后,每个小批量突然开始需要 40 秒。可疑的是,每次看起来正好是 40 秒。在此之前,批次只需要不到一秒钟的时间。

查看特定任务的详细信息,大多数分区的处理速度非常快,但有些则需要 40 秒:

GC 看起来不错,因为数据正在快速处理,但突然完整的 GC 等停止(与 40 秒问题同时):

在发生此问题时,我已从其中一个执行程序中获取线程转储,但我看不到它们被阻止的任何资源:

我们是否遇到了 GC 问题,为什么会以这种方式表现出来?是否有其他资源被阻塞,它是什么?

【问题讨论】:

  • 请进行堆转储,看看您是否遇到了 SPARK-23682。如果您遇到同样的问题,Spark 2.4.0 将解决此问题。
  • 嗨@Jungtaek - 你在邮件列表中给出了相同的答案。你是对的,在 2.4 中对我们来说似乎是固定的。我们想再测试一下,我也会回复邮件列表。
  • 啊,是的,我不记得我在邮件列表中回答的所有内容了。我希望官方 Spark 2.4 可以解决您的问题。

标签: apache-spark garbage-collection spark-structured-streaming


【解决方案1】:

尝试给更多的 HEAP 空间,看看 GC 是否仍然如此不堪重负,如果是这样你很可能有内存泄漏问题

你用的是什么火花版本?如果它的 spark 2.3.1 已知 FD leakage issue 如果您正在从 Kafka 读取数据(这非常常见),要确定您的工作是否泄漏 FD,请查看从属容器进程中的 FD 使用情况,通常是应该非常一致地在 100 到 200 左右,只需升级到 spark 2.3.2 就可以解决这个问题,我很惊讶这个问题是如此根本,但从未得到足够的可见性

【讨论】:

    猜你喜欢
    • 2020-03-07
    • 1970-01-01
    • 2020-03-19
    • 2020-09-12
    • 1970-01-01
    • 2017-08-11
    • 2021-01-05
    • 2021-03-06
    • 1970-01-01
    相关资源
    最近更新 更多