【发布时间】:2020-05-17 11:40:20
【问题描述】:
我是 Flink 的新手,计划在 EKS 上部署 Flink 会话集群,有 1 个作业管理器和 5 个任务管理器(每个任务管理器有 4 个插槽)。针对不同的用例,将通过 UI 提交不同的作业。
假设我已经提交了一个由 RocksDBStateBackend 支持的有状态作业(作业具有使用 RichFlatMapFunction 的简单计数器逻辑),其中 S3 checkpointDataUri 和 DbStoragePath 指向本地文件路径,并且该作业完全使用 8 个插槽,分布在两个任务管理器中并且运行良好一天没有任何问题。下面是我的问题,
1) 我对 RocksDBStateBackend 中 checkpointDataUri 和 DbStoragePath 的理解是,checkpointDataUri 将处理后的偏移信息存储在 S3 中(因为我配置了带有 S3 前缀的 checkpointDataUri),而 DbStoragePath 包含了 RichFlatMapFunction 中使用的所有状态信息。所以所有有状态的信息都存储在 checkpointDataUri 中,它只在本地可用。如有错误请指正。
2) 假设我的 Ec2 实例由于某种原因被重新启动(使用了 4 个插槽的那个)并且大约需要 30 分钟才能上线,在这种情况下,EKS 会将新的 Ec2 实例作为 TaskManager 来匹配副本,但是 Flink 作业管理器现在是否会尝试将 4 个插槽重新调度到不同的任务管理器?如果是,如何恢复存储在 Ec2 本地实例中的状态?
3) 有没有 Flink EKS 故障恢复相关的文档/视频。我看到了official documentation,它指定了如何在 EKS 中部署 Flink 会话集群。但我没有发现任何与 EKS 模式下的故障恢复相关的内容。有人可以为我指出正确的方向吗?
【问题讨论】:
标签: apache-flink flink-streaming amazon-eks