apache-flink - 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
解决方案
问题似乎是您在多次运行中重复使用相同的作业 ID,这会导致冲突。如果您不使用 HA,那么您应该始终为每个作业运行/作业提交生成一个唯一的作业 ID。最简单的方法是生成一个随机 id。如果您想从存储在 HA 存储中的状态恢复作业运行,您只需要修复作业 ID。
推荐阅读
- reactjs - 如何使用 React Native 和 Redux 制作搜索栏
- python - for 循环仅使用 dict 中的第一个键
- c++ - 如何在 C++ 中删除二维数组中的列
- mysql - 无需合并列即可有效查找聚合行的详细信息 (MySQL)
- dynamics-crm - 激活 BPF 抛出错误 - 具有指定名称的属性已存在
- java - 如何将 linux 终端插入到我的 java 应用程序中
- python - 在python中使用相对导入的值错误
- authentication - .NET Core 中可读(DER?)格式的椭圆曲线 256 公钥
- apostrophe-cms - 将字段添加到撇号-richt-text
- java - JaVers 忽略收集顺序并报告收集中的重复项