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已切換