【问题标题】:Spark Structured Streaming Checkpoint CleanupSpark 结构化流检查点清理
【发布时间】:2018-06-22 11:42:58
【问题描述】:

我正在使用结构化流从文件源中提取数据。我有一个检查点设置,据我所知它可以正常工作,除非我不明白在几种情况下会发生什么。如果我的流媒体应用程序运行了很长时间,检查点文件是否会永远变大,或者最终会被清理掉。如果它从不清理有关系吗?看来最终它会变得足够大,以至于程序需要很长时间才能解析。

我的另一个问题是,当我手动删除或更改检查点文件夹,或更改为不同的检查点文件夹时,不会摄取新文件。文件被识别并添加到检查点,但文件实际上并未被摄取。这让我担心如果检查点文件夹以某种方式被更改,我的摄取会搞砸。我找不到太多关于在这些情况下正确的程序的信息。

【问题讨论】:

  • 我目前正在编写 spark 流式查询。据我了解,它是相关的水印。我们需要为每个查询设置水印和可靠的阈值。 Spark 将在阈值时间后删除检查点。但查询将继续没有问题。但我从未测试过它。没有人告诉我这是对还是错。

标签: apache-spark spark-structured-streaming


【解决方案1】:

如果我的流媒体应用程序运行很长时间,检查点文件 只是继续永远变大还是最终清理干净

Structured Streaming 保留一个后台线程,负责删除状态的快照和增量,因此您不必担心它,除非您的状态非常大并且您拥有的空间量很小,在这种情况下您可以配置重新训练的增量/快照 Spark 存储。

当我手动删除或更改检查点文件夹,或更改为 不同的检查点文件夹没有摄取新文件。

我不太确定你的意思,但你应该只在特殊情况下删除检查点数据。结构化流式处理允许您在版本升级之间保持状态,只要存储的数据类型向后兼容。除非发生了不好的事情,否则我真的没有看到更改检查点位置或手动删除文件的充分理由。

【讨论】:

  • 请您在此处扩展第 1 点。我面临着类似的问题,我可以看到我的 HDFS 利用率在增加。结构化流如何确定删除快照的方式/时间以及如何配置 Spark 存储?
  • 您好,我也面临同样的问题,但我不想清理整个 checkpnt 文件,我想在 hdfs 中删除 25 天之前的文件,因为我们在 hdfs 中有 25 天的保留政策,请帮助我解决这个问题。
【解决方案2】:

在运行我的结构化流媒体应用程序 6 个月后,我找到了一些我认为的答案。检查点文件每执行 10 次就会压缩一次,并且会继续增长。一旦这些压缩文件变大~2gb,处理时间就会显着减少。所以每 10 次处决大约有 3-5 分钟的延迟。我清理了检查点文件,因此重新开始,执行时间立即恢复正常。

对于第二个问题,我发现基本上有两个检查点位置。指定的检查点文件夹和表目录中的另一个 _spark_metadata。两者都需要删除才能从检查点重新开始。

【讨论】:

  • 你能告诉..如果长时间不清理检查点目录会出现问题吗?比如磁盘空间不足问题
  • 磁盘空间不足取决于您有多少空间,所以我无法回答。但正如我在每个检查点文件约 2gb 之后所描述的那样,速度肯定会减慢。
  • 您好@torpedoted,请您详细说明您在上述评论中提到的点我清理了检查点文件,因此重新开始,执行时间立即恢复正常你如何清理检查点文件,我需要一些指针,因为我目前陷入同一个问题。
猜你喜欢
  • 2023-03-10
  • 1970-01-01
  • 2021-12-03
  • 2017-06-19
  • 1970-01-01
  • 2018-03-18
  • 1970-01-01
  • 2019-09-13
  • 1970-01-01
相关资源
最近更新 更多