flink-sql 可以配置退出时不清理 checkpoint 嘛[阿里云实时计算 Flink版]

然后重跑 sql 时,指定checkpoint 进行恢复

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
15 条回复 A 作者 M 管理员
  1. 答案是肯定的。如果我们这样配置当flink-sql退出的时候,checkpoint目录是不会被删除,这个你需要注意。

  2. Flink SQL 支持在退出应用程序时不清理 Checkpoint,以便在重启应用程序时可以使用 Checkpoint 进行恢复。

    具体来说,您可以在 Flink SQL 中配置以下两个参数:

    • execution.checkpointing.enabled: 此参数用于启用 Flink SQL 应用程序的 Checkpoint 功能,其默认值为 true。

    • state.checkpoints.dir: 此参数用于指定将状态数据持久化到哪个目录下。例如,您可以将其设置为 file:///opt/flink/checkpoints。如果您希望 Flink SQL 应用程序退出时不清理 Checkpoint,请确保在重启应用程序时使用相同的 Checkpoint 目录位置。

    如果您希望在使用上述配置的情况下重新启动 Flink SQL 应用程序时恢复 Checkpoint,请按照以下步骤操作:

    1. 启动 Flink 集群,并将 Flink SQL 应用程序提交到集群中运行。

    2. 在 Flink WebUI 或者命令行中查看 Flink SQL 应用程序的 JobID。例如,您可以使用命令 flink list -a 在命令行中查看所有正在运行的作业。

    3. 在 Flink WebUI 或者命令行中执行如下命令,以重新启动 Flink SQL 应用程序并恢复 Checkpoint:

    flink run -s  -d  

    其中, 是上一次 Flink SQL 应用程序退出时保存 Checkpoint 的位置, 是 Flink SQL 应用程序的路径, 是 Flink SQL 应用程序的 JobID。该命令将重新启动 Flink SQL 应用程序,并从指定的 Checkpoint 恢复状态。

    需要注意的是,在重启应用程序时,Flink 将会检查 Checkpoint 是否存在,如果存在将会使用它在上一次的状态来恢复应用程序,否则将会从头开始处理数据。另外,如果在应用程序运行期间没有生成任何 Checkpoint,那么无法使用 Checkpoint 恢复应用程序。

  3. Checkpoint作业运行底层自动进行,默认3min一次Checkpoint,一次Checkpoint超时10min,Checkpoint完成时,在用户给定的外部持久化 存储保存;当作业FAILED(或者 CANCELED)时,外部 存储的Checkpoint会保留下来。Checkpoint保存在哪个文件下具体可以参考查看历史作业实例日志。

  4. 要配置 Flink SQL 任务在退出时不清理检查点,您需要在提交任务时设置 execution.checkpointing.externalized-checkpoint-retention 参数为 RETAIN_ON_CANCELLATION

  5. 可以。Flink SQL 可以通过设置配置参数 state.ttl.cleanup-include-deltas 的值来控制 Flink 退出时是否清理 Checkpoint。

    具体来说,如果将 state.ttl.cleanup-include-deltas 设置为 false,则 Flink 在退出时不会清理 Delta Checkpoint,这通常用于在调试或测试时保留 Checkpoint 数据以便进行后续分析。

    例如,在 SQL CLI 中可以使用如下命令来设置该参数的值:

    SET state.ttl.cleanup-include-deltas = false;

    需要注意的是,虽然在某些情况下保留 Checkpoint 数据可能会有一定的帮助,但同时也会增加系统存储和管理成本,因此需要谨慎使用。

  6. 是可以的。 在 Flink SQL 中,可以通过设置 ExecutionCheckpointingOptions.CHECKPOINT_RETENTION_TIME 配置项来控制 Checkpoint 的保留时间,从而实现在退出时不清理 Checkpoint。另外,可以通过设置 ExecutionCheckpointingOptions.EXTERNALIZED_CHECKPOINT 手动指定 Checkpoint 的保存路径,然后在重跑 SQL 时指定该路径进行恢复。具体操作可以参考 Flink 官方文档中的相关章节。

  7. Flink SQL 中的 Checkpoint 实际上是由 Flink 引擎提供的机制,用于实现容错性的保证。因此,如果你想要在退出时避免清除 Checkpoint,需要在 Flink 引擎的配置文件中进行配置。

    具体来说,可以通过修改 Flink 的配置文件 flink-conf.yaml 来实现该功能。具体步骤如下:

    找到 Flink 安装路径下的 conf 文件夹,如果没有则可以在安装路径下创建该文件夹。

    打开 conf/flink-conf.yaml 文件,找到 state.checkpoints.dir 参数,该参数指定了 Checkpoint 存储的目录路径。

    例如,可以将其配置为:state.checkpoints.dir: file:///path/to/checkpoints。

    注意,这里使用了本地文件系统,如果需要使用分布式文件系统(如 HDFS),可以在 file:// 前添加对应的协议。