1. 背景
默认情况下一个flink job只启动一个jobManager,因此存在单点故障问题,所以生产环境中需要HA。
因为生产环境中基于yarn集群的flink应用场景更多,本文只介绍基于yarn的flink高可用配置。
2. 配置
配置yarn集群级别AM重启上限
# vim yarn-site.xml
<property>
<name>yarn.resourcemanager.am.max-attempts</name>
<value>100</value>
</property>
配置flink HA相关
# vim /home/admin/flink-1.9.1/conf/flink-conf.yaml
high-availability: zookeeper
high-availability.storageDir: hdfs:///flink/ha/
high-availability.zookeeper.quorum: uhadoop-op3raf-master1,uhadoop-op3raf-master2,uhadoop-op3raf-core1
# 单个flink job的重试次数
yarn.application-attempts: 10
3. 启动
方式一
启动一个基于yarn的flink集群
/home/admin/flink-1.9.1/bin/yarn-session.sh -n 10 -jm 10g -tm 10g -s 10 2>&1 &
提交一个flink job到上面启动的flink集群
/home/admin/flink-1.9.1/bin/flink run -yn 8 -yqu root.flink -ys 4 -yid application_1572318163583_50445 /home/admin/tiangx/applog_etl/jar/applog_etl-1.0-SNAPSHOT-jar-with-dependencies.jar
方式二
在yarn上提交flink single job,直接启动一个flink集群
/home/admin/flink-1.9.1/bin/flink run -m yarn-cluster -yn 8 -yqu root.flink -ys 4 -ynm etl_test \
/home/admin/tiangx/applog_etl/jar_test/applog_etl-1.0-SNAPSHOT-jar-with-dependencies.jar
4. 验证
4.1 打开flink控制台,可以看到jobManager在节点uhadoop-op3raf-core6
4.2 ssh到该节点,使用jps查看:
20919 YarnSessionClusterEntrypoint(ApplicationMaster)为FlinkJobManager进程,将其kill掉
ps: flink 1.10版本JobManager进程为:YarnJobClusterEntrypoint
4.3 刷新hadoop控制台(下图)可以看到jobManager在uhadoop-op3raf-core10:23999上重启了
4.4 刷新flink控制台,可以发现jobManager已切换