首页 > 解决方案 > Flink 保存点每次都从头开始重新启动我的一次性源(S3 和 Kinesis)

问题描述

我怎样才能设法让保存点从正确的偏移量开始?我正在使用标准 Kinesis 接收器和指向 S3 路径的连续读取器。

我正在使用一次性语义(检查点),我可以验证源的状态是否与每个保存点一起存储。

标签: apache-flink

解决方案


在底层,Flink 将文件读取过程拆分为两个子任务,即目录监控和数据读取。这些子任务中的每一个都由一个单独的实体实现。... 单个监控任务的作用是扫描目录(根据watchType定期或仅扫描一次),找到要处理的文件,将它们划分为split,并将这些split分配给下游的reader。读者是那些将阅读实际数据的人。

监控功能在 中ContinuousFileMonitoringFunction,它会将目前所监控的文件或目录的最大文件修改时间记录到快照中。CheckpointableInputFormat并且正在读取的文件拆分的每个s 都记录了它们的偏移量。

不知道为什么这不符合您的预期,但正如@YuvalItzchakov 所提到的,当此状态恢复时会有有用的日志记录——如果您启用调试级别的日志记录更是如此。查看这些任务管理器日志可能会揭示发生了什么。

如果您遇到困难并想在切换到 kinesis 之前探索一种引导状态的替代方法,您可以使用状态处理器 API 从这些文件中的数据创建一个保存点。或者您可以使用状态处理器 API 来检查您已有的保存点中的状态。


推荐阅读