我想在kubernetes上运行一个Apache flink(1.11.1)流应用程序。使用文件系统状态后端保存到s3。指向s3的检查点有效
args:
- "standalone-job"
- "-s"
- "s3://BUCKET_NAME/34619f2862ce3e5fc91d80eae13a434a/chk-4/_metadata"
- "--job-classname"
- "com.abc.def.MY_JOB"
- "--kafka-broker"
- "KAFKA_HOST:9092"
ListState<String>
中。env.enableCheckpointing(Duration.ofSeconds(60).toMillis());
和env.getCheckpointConfig().enableExternalizedCheckpoints(RETAIN_ON_CANCELLATION);
答案 0 :(得分:2)
execution.checkpointing.interval: 60000
execution.checkpointing.externalized-checkpoint-retention: RETAIN_ON_CANCELLATION
答案 1 :(得分:0)
有多种方法可以将工作负载部署到kubernetes,简单的YAML文件,Helm Chart和Operator。
升级有状态Flink作业并不像升级无状态服务那样简单,只需更新二进制文件并重新启动即可。
升级Flink作业,您需要获取一个保存点或获取最新的检查点目录,然后更新二进制文件并最终重新提交作业,在这种情况下,我认为简单的YAML文件和Helm Chart无法帮助您实现这一目标,您应该考虑实施Flink Operator进行升级工作。
https://github.com/GoogleCloudPlatform/flink-on-k8s-operator