检查点

概览

检查点通过允许恢复状态和相应的流位置使Flink中的状态容错,从而为应用程序提供与无故障执行相同的语义。

有关如何为程序启用和配置检查点的信息,请参阅检查点。

保存检查点

默认情况下,检查点不会保存,仅用于从失败中恢复作业。取消程序时会删除它们。但是,您可以配置要保存的定期检查点。根据配置,当作业失败或取消时,不会自动清除这些保存的检查点这样,如果您的工作失败,您将有一个检查点可以从中恢复。

  1. CheckpointConfig config = env.getCheckpointConfig();
  2. config.enableExternalizedCheckpoints(ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);

ExternalizedCheckpointCleanup模式配置取消作业时检查点发生的情况:

  • ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION:取消作业时保存检查点。请注意,在这种情况下,您必须在取消后手动清理检查点状态。

  • ExternalizedCheckpointCleanup.DELETE_ON_CANCELLATION:取消作业时删除检查点。只有在作业失败时,检查点状态才可用。

目录结构

保存点类似,检查点由元数据文件和一些其他数据文件组成,具体取决于状态后台。元数据文件和数据文件存储在state.checkpoints.dir配置文件中配置的目录中,也可以为代码中的每个作业指定。

通过配置文件全局配置

  1. state.checkpoints.dir: hdfs:///checkpoints/

在构造状态后台时为每个作业配置

  1. env.setStateBackend(new RocksDBStateBackend("hdfs:///checkpoints-data/");

保存点的差异

检查点与保存点有一些差异他们

  • 使用状态后台特定(低级)数据格式,可以是增量式的。
  • 不支持Flink特定函数,如重新缩放。

从保存的检查点恢复

通过使用检查点的元数据文件,可以从检查点恢复作业,就像从保存点恢复一样(请参阅保存点恢复指南)。请注意,如果元数据文件不是自包含的,则JobManager需要访问它所引用的数据文件(请参阅上面的目录结构)。

  1. $ bin/flink run -s :checkpointMetaDataPath [:runArgs]