原理:
尽管TaskManager通过增加Deployment的副本可以实现高可用性,但JobManager仍然是单点故障。
Flink 借助ZooKeeper和诸如HDFS之类的分布式文件系统提供了HA解决方案。在独立集群中,将启动多个JobManager,并选择其中一个作为领导者。
在YARN或Kubernetes部署中,仅需要一个JobManager实例。群集的元信息存储在ZooKeeper中,检查点数据存储在HDFS中。当JobManager关闭时,Kubernetes将重新启动容器,而新的JobManager将还原最后一个检查点并恢复作业。
指令:
要启用JobManager HA,请同时更改JobManager和TaskManager的启动命令:
1 | command: ["/opt/flink/bin/standalone-job.sh"] |
1 | command: ["/opt/flink/bin/taskmanager.sh"] |
- 在minikube主机上准备ZooKeeper和HDFS环境,以便Flink容器可以通过
192.168.99.1:2181
和访问它们192.168.99.1:9000
。 - 群集元数据将存储
/flink/${JOB}
在ZooKeeper中。 - 检查点数据存储
/flink/recovery
在HDFS中。确保您创建/flink
具有适当权限的目录。 jobmanager.rpc.address
从TaskManager的参数中删除该属性,因为将从ZooKeeper中获取JobManager的RPC主机和端口。默认情况下,RPC端口是随机的,因此我们通过更改为固定端口high-availability.jobmanager.port
,该端口在k8s服务中公开。
打赏