首页 > 解决方案 > Flink JobManager 因检查点失败而死

问题描述

我最近将我们的 Flink 从无 HA 作业集群迁移1.9.0到了1.11.1无 HA 作业集群。我面临以下错误,该错误导致JobManager每 5 分钟后失败,并且 Flink 作业通过 AWS ECS 卡在这些重启循环中。

它曾经在 Flink 1.9.0 中工作,但升级后1.11.1不能。因为我没有 JM HA,所以我--job-id为每个 flink 作业生成了固定的而不是默认的 id 00000000000。我是 Flink 的新手。

org.apache.flink.runtime.checkpoint.CheckpointException: Could not finalize the pending checkpoint
5.
    at org.apache.flink.runtime.checkpoint.CheckpointCoordinator.completePendingCheckpoint(CheckpointCoordinator.java:837)
    at org.apache.flink.runtime.checkpoint.CheckpointCoordinator.receiveAcknowledgeMessage(CheckpointCoordinator.java:756)
    at org.apache.flink.runtime.jobmaster.JobMaster.lambda$acknowledgeCheckpoint$9(JobMaster.java:676)
    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:39)
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:415)
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: org.apache.hadoop.fs.FileAlreadyExistsException: 's3://data/flink/checkpoints/<unique_job_id>/chk-5/_metadata'
already exists

标签: apache-flink

解决方案


问题似乎是您在多次运行中重复使用相同的作业 ID,这会导致冲突。如果您不使用 HA,那么您应该始终为每个作业运行/作业提交生成一个唯一的作业 ID。最简单的方法是生成一个随机 id。如果您想从存储在 HA 存储中的状态恢复作业运行,您只需要修复作业 ID。


推荐阅读