如果运行重复作业(多租户),检查点/保存点是如何工作的

bn31dyow  于 2021-06-21  发布在  Flink
关注(0)|答案(2)|浏览(281)

我有多个kafka主题(多租户),我根据主题的数量运行同一个作业多次,每个作业使用一个主题的消息。我已将文件系统配置为状态后端。
假设有3个作业正在运行。这里的检查站是怎么工作的?这3个作业是否都将检查点信息存储在同一路径中?如果任何作业失败,该作业如何知道从何处恢复检查点信息?我们通常在向flink集群提交作业时提供作业名称。跟这事有关系吗?一般来说,flink如何区分作业及其检查点信息,以便在作业出现故障或手动重新启动时进行恢复(不考虑相同或不同的作业)?
案例1:如果工作失败会发生什么?
案例2:如果手动重新启动作业会发生什么?
谢谢您

pgky5nke

pgky5nke1#

jobmanager知道每个作业检查点,并保留该元数据,检查点被保存到检查点目录(通过flink-conf.yaml),在此目录下它将为每个检查点创建一个随机哈希目录。
案例1:作业将重新启动(取决于回退策略…),如果启用了检查点,它将读取最后一个检查点。
案例2:我不是100%确定,但我认为如果你手动取消作业,然后提交它,它不会读取检查点。您需要使用savepoint(可以使用保存点终止作业,然后使用相同的保存点再次提交作业)。只要确保每个操作员都有一个uid。您可以在此处阅读有关保存点的更多信息:https://ci.apache.org/projects/flink/flink-docs-stable/ops/state/savepoints.html

1sbrub3j

1sbrub3j2#

接着@shemtov说:
每个作业都会将其检查点写入名为jobid的子目录中。
如果手动取消作业,检查点将被删除(因为恢复不再需要这些检查点),除非已将其配置为保留:

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

保留的检查点可用于手动重新启动和重新缩放。
保留检查点上的文档。
如果配置了高可用性,那么作业管理器关于检查点的元数据将存储在ha存储区中,以便恢复不依赖于作业管理器的生存。

相关问题