问下大家有没有遇到过Flink :checkpoint和savepoint都能正常生成,没有报错,?[阿里云实时计算 Flink版]

问下大家有没有遇到过Flink :checkpoint和savepoint都能正常生成,没有报错,savepoint可以恢复job,checkpoint恢复时提示shared下有文件找不到,我看了下的确没有生成该文件。我的flink版本是1.16?

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
2 条回复 A 作者 M 管理员
  1. 在 Flink 中,Checkpoint 和 Savepoint 的生成需要满足一定的条件,否则可能会导致生成失败或者生成的 Checkpoint 和 Savepoint 不完整。以下是一些常见的导致 Checkpoint 和 Savepoint 生成失败的原因:
    程序中存在不可序列化的状态:
    在 Flink 中,Checkpoint 和 Savepoint 存储的是任务的状态信息。如果任务中存在不可序列化的状态,可能会导致 Checkpoint 和 Savepoint 的生成失败。可以通过将不可序列化的状态设置为 transient,或者使用 Flink 提供的 ListState、MapState 等可序列化的状态类型来避免这个问题。
    Flink 集群中的某些节点无法访问:
    在生成 Checkpoint 和 Savepoint 时,Flink 需要将状态信息存储到分布式文件系统中。如果 Flink 集群中某些节点无法访问分布式文件系统,可能会导致生成 Checkpoint 和 Savepoint 失败。可以通过检查分布式文件系统的配置和节点的网络连接情况来解决这个问题。
    程序中使用了不支持的操作:
    在生成 Checkpoint 和 Savepoint 时,Flink 需要对任务的状态信息进行快照。如果程序中存在不支持的操作,例如使用了本地文件系统或者网络连接等操作,可能会导致快照生成失败。可以通过使用 Flink 提供的可靠的状态后端(例如 RocksDB 状态后端)来避免这个问题。
    Checkpoint 和 Savepoint 配置的间隔时间过短:

  2. 在使用 Flink 进行 checkpoint 和 savepoint 生成时,如果没有出现报错,并且 savepoint 能够成功恢复作业,但是 checkpoint 恢复时提示找不到 shared 目录下的文件,这可能是由于以下原因导致的:

    1. 检查路径是否正确:请确保在配置文件中正确设置了 checkpoint 和 savepoint 的目录路径,并且可以在相应的路径下找到生成的文件。检查是否存在拼写错误或者是相对路径和绝对路径的问题。

    2. 查看最新的 checkpoint:需要确认你正在使用的是最新的 checkpoint。有时候,由于配置或其他原因,Flink 可能从旧的 checkpoint 路径中加载数据,而不是从最新的 checkpoint 中。可以在日志中查看最新的 checkpoint 路径,并确保使用的是该路径。

    3. 清理过期的 checkpoint 数据:Flink 默认会自动清理过期的 checkpoint 数据,以释放存储空间。如果您在生成 checkpoint 后的一段时间内没有及时恢复作业,那么可能已经超过了清理阈值,部分 checkpoint 数据已被删除。在这种情况下,checkpoint 文件可能无法完全恢复作业。

    4. 检查权限问题:确保 Flink 进程有足够的权限来访问 checkpoint 和 savepoint 的目录。如果权限设置不正确,可能会导致读取或写入文件失败。

    5. 升级 Flink 版本:Flink 的各个版本可能会存在不同的问题和bug。如果您使用的是较旧的 Flink 版本,可以尝试升级到最新的稳定版本,以获得更好的稳定性和功能性。

    总之,当遇到 checkpoint 恢复时提示找不到 shared 目录下的文件的问题时,建议仔细检查路径设置、权限和清理策略等方面,确保相关配置正确并且文件可访问,同时也可以通过查看日志和追踪 Flink 的执行过程来进一步诊断和解决问题。

  3. 你要看日志,看最新的ck是哪个,有可能你拿到了历史的ck路径,这个ck已经被清掉了,此回答整理自钉群“【③群】Apache Flink China社区”