当前位置: 首页 > 知识库问答 >
问题:

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

堵景天
2023-03-14

我有多个Kafka主题(多租户),我运行同一个作业运行多次基于主题的数量,每个作业消耗来自一个主题的消息。我已将文件系统配置为状态后端。

假设有3个作业正在运行。这里的检查站是如何工作的?这3个作业是否都将检查点信息存储在同一路径中?如果任何作业失败,该作业如何知道从何处恢复检查点信息?我们过去常常在向flink集群提交作业时提供作业名称。这和它有什么关系吗?一般来说,Flink如何区分作业及其检查点信息,以便在作业出现故障或手动重新启动时恢复(不考虑相同或不同的作业)?

案例1:如果工作失败会发生什么?

案例2:如果我们手动重新启动作业会发生什么?

谢谢你

共有2个答案

夏朝
2023-03-14

要继续@ShemTov所说的话:

每个作业将在一个名为jobId的子目录中写入其检查点。

如果手动取消作业,检查点将被删除(因为恢复不再需要这些检查点),除非已将其配置为保留:

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

保留的检查点可用于手动重新启动和重新缩放。

保留检查点上的文档。

如果配置了高可用性,作业管理器关于检查点的元数据将存储在HA存储中,因此恢复不依赖于作业管理器的生存。

何乐
2023-03-14

JobManager知道每个作业检查点,并保留该元数据,检查点保存到检查点目录(通过flink-conf.yaml),在此目录下,它将为每个检查点创建一个随机哈希目录。

案例1:作业将重新启动(取决于您的回退策略…),如果启用了检查点,它将读取最后一个检查点。

案例2:我不是100%确定,但是我认为如果你手动取消工作,然后提交它,它不会读取检查点。您需要使用保存点。(您可以使用保存点终止您的工作,然后使用相同的保存点再次提交您的工作)。只要确保每个oprator都有一个UID。你可以在这里阅读更多关于保存点的信息:https://ci.apache.org/projects/flink/flink-docs-stable/ops/state/savepoints.html

 类似资料:
  • 我正在检查Flink Sql Table与kafka连接器是否可以在EXACTLY_ONCE模式下执行,我的方法是创建一个表,设置合理的检查点间隔,并在event_time字段上使用简单的翻滚函数,最后重新启动我的程序。 以下是我的详细进度: 1:创建一个Kafka表 2:启动我的 Flink 作业,如下所示配置 3:执行我的sql 如我们所见,翻转窗口间隔为5分钟,检查点间隔为30秒,每个翻转窗

  • 我有一份flink的工作,它使用Kafka的数据,制作一些无状态平面图,并向Kafka生成数据,这是一份工作量非常小的工作。 例如,在作业需要从检查点还原之前,它通常会无问题地获取检查点,而它只是无法使用下面的堆栈跟踪还原状态。 状态非常小,我相信它只是Kafka偏移量,它至少运行了一次语义。 所有操作员都有。uid()集,我完全没有主意了。 这是尝试从检查点重新启动时的错误: 任务管理器在正常操

  • 我们目前正在kubernetes上运行flink,作为使用这个helm模板的作业集群:https://github.com/docker-flink/examples/tree/master/helm/flink(带有一些添加的配置)。 如果我想关闭集群,重新部署新映像(由于应用程序代码更新)并重新启动,我将如何从保存点进行恢复? jobManager命令严格设置在standalone-job.s

  • 我注意到,每次我运行一个新作业时,它所花费的时间比我再次启动它时长20%左右? 如果一个作业运行多次,flink是否缓存一些结果并重用它们?如果是,我如何控制这一点? 我想测量我的任务运行了多长时间,但每次我重新运行它们时,速度都比以前快。

  • 问题内容: 如何检查计划的Quartz Cron作业是否正在运行?是否有任何API可以进行检查? 问题答案: scheduler.getCurrentlyExecutingJobs()在大多数情况下应该可以工作。但是请记住不要在Job类中使用它,因为它使用ExecutingJobsManager(a JobListener)将正在运行的作业放到HashMap中,该HashMap在作业类之前运行,因

  • 如何检查计划的Quartz cron作业是否正在运行?是否有API进行检查?