根据部署方式不同,Flink Jobmanager HA配置分为2种:
1、standalone cluster HA
2、Yarn cluster HA
其中,standalone cluster HA可参考我之前的一篇文章。
简单回顾下,standalone模式的HA需要多个“活着的”Jobmanager,其中1个作为leader,其他作为standby,leader选举依赖于Zookeeper。可以用下面的一张图来形象的表述standalone HA:
本文专门讨论Yarn下Flink HA的搭建与配置。
一、Flink On Yarn 简介
Flink部署在Yarn上,仅作为yarn上“多租户”的一个service而存在。Flink在yarn中容器的概念分为2种:
用于启动JobManager(AM)的容器
用于启动TaskManager的容器
我们可以通过yarn-session.sh –help来看下启动Flink On Yarn的参数信息:
其中-n代表taskmanager的容器数量,而不是taskmanager+jobmanager的容器数量。
在配置HA前,先通过-q看一下我的yarn集群的资源情况:
从图中可以看出,我配置的每个NodeManager的内存是8192MB(yarn-site.xml),每个NodeManager的vcores数量是8。所以,当前yarn集群中可用内存总量为32768,总cores是32.
二、Flink on Yarn HA 配置
1、配置准备
在配置Flink On Yarn之前,必须保证hdfs和yarn都已经开启,可以通过$HADOOP_HOME/sbin/start-all.sh启动hdfs和yarn。
2、配置AM在尝试重启的最大次数(yarn-site.xml)
此配置需要在$HADOOP_CONF_DIR
的yarn-site.xml添加。
添加如下配置:
此配置代表application master在重启时,尝试的最大次数。
3、配置Application Attempts(flink-conf.yaml)
此参数需要在$FLINK_HOME/conf
的flink-conf.yaml中配置。
添加如下配置:
此参数代表Flink Job(yarn中称为application)在Jobmanager(或者叫Application Master)恢复时,允许重启的最大次数。
注意,Flink On Yarn环境中,当Jobmanager(Application Master)失败时,yarn会尝试重启JobManager(AM),重启后,会重新启动Flink的Job(application)。因此,yarn.application-attempts的设置不应该超过yarn.resourcemanager.am.max-attemps.
4、配置zookeeper信息
虽然flink-on-yarn cluster HA依赖于Yarn自己的集群机制,但是Flink Job在恢复时,需要依赖检查点产生的快照,而这些快照虽然配置在hdfs,但是其元数据信息保存在zookeeper中,所以我们