Flink高可用设置

Flink从逻辑上保证高可用的方式是通过检查点机制,但从物理架构上,则也需要保证高可用性.

比如其中的JobManager组件的故障.

JobManager存放了对应的应用及相关的元数据,比如检查点路径信息,这些都需要进行高可用保证.

Flink的HA模式需要依赖ZooKeeper和某种远程存储.一旦出现了故障,新的JobManager从ZK中查找相关路径,并在远程存储中查找并加载元数据.

简单开启Flink HA模式的配置如下.都在./conf/flink-conf.yaml中配置

开启HA

high-availability:zookeeper

ZK的服务器列表

high-availability.zookeeper.quorum:xxxxx,xxxx

设置ZK的前缀

high-availability.zookeeper.path.root: ./flink

那么不同部署模式下的HA如何实现呢?

1.     集群部署

集群部署由于没有和外部服务集成,那么需要自己准备后备的组件来进行接管.

对于TaskManager进程会在自己的主ResourceManager中注册,当出现故障的时候,会自动将任务转移给其他的ResourceMananger.

对于Dispatcher,只会存在一个领导者,其他都是跟随者,只是负责在故障出现时进行顶替

而对于启动的JobManager,则是将路径写入ZK,利用远程存储进行高可用保存.

集群模式下的HA,需要维持一些配置,比如每个集群设置自己的名称,避免在同一个ZK中注册,导致无法区分

high-availability.cluster-id: xxxxx,xxxx

2.     YARN的HA设置

YARN带有资源的高可用管理器

所以无需设置后背进程,而Flink在YARN中,是以ApplicationMaster存在的,YARN会自动重启故障的ApplicationMaster,但是往往有一个重启的最大限制,这个最大限制可以在YARN的配置文件中配置.

图片

3.     Kubernetes的HA设置

Kubernetes上由于Flink的部署方式本身就具有高可用性,那么想要使用HA的话.需要配置的参数并不多,只需要在配置文件中配置ZK的主机名,持久化存储路径以及Flink集群ID,所有都需要作为参数添加到Flink的配置文件中

不过由于Flink本身不支持设置环境变量参数,所需要进行硬编码

发表评论

邮箱地址不会被公开。 必填项已用*标注