正常基于 Yarn 提交 Flink 程序,无论是使用 yarn-session 模式还是 yarn-cluster 模 式 , 基 于 yarn 运 行 后 的 application 只 要 kill 掉 对 应 的 Flink 集 群 进 程 “YarnSessionClusterEntrypoint”后,基于 Yarn 的 Flink 任务就失败了,不会自动进行 重试,所以基于 Yarn 运行 Flink 任务,也有必要搭建 HA,同样还是需要借助 zookeeper 来完成高可用管理,步骤如下:

  1. 修改所有 Hadoop 节点的 yarn-site.xml
    将所有 Hadoop 节点的 yarn-site.xml 中的提交应用程序最大尝试次数调大 ,在每台hadoop节点yarn-site.xml中设置提交应用程序的最大尝试次数,建议不低于4,这里 重试指的是ApplicationMaster
<property> 
<name>yarn.resourcemanager.am.max-attempts</name>
<value>4</value>
</property>
  1. 启动 Hadoop 集群
    启动 zookeeper,启动 Hadoop 集群。
  2. 修改 Flink 对应 flink-conf.yaml 配置
    配置对应的 conf 下的 flink-conf.yaml,配置内容如下:
#配置依赖zookeeper模式进行HA搭建
high-availability: zookeeper
#配置JobManager原数据存储路径
high-availability.storageDir: hdfs://mycluster/flinkHA/
#配置zookeeper集群节点
high-availability.zookeeper.quorum: node2:2181,node3:2181,node4:2181
#yarn停止一个application重试的次数
yarn.application-attempts: 10
  1. 启动 yarn-session.sh 测试 HA
./flink run -m yarn-cluster -yn 3 -ys 3 -ynm yyy -c stream.FlinkStreamWordCount /root/test/Flink-test-1.0-SNAPSHOT.jar

Flink On Yarn HA 安装和配置_hadoop
点击对应的 Tracking UI,进入 Flink 集群 UI:查看对应的 JobManager 在哪台节点上启动:
Flink On Yarn HA 安装和配置_hadoop_02
进入对应的节点,kill 掉对应的“YarnSessionClusterEntrypoint”进程。然后进入到 Yarn 中观察“applicationxxxx_0001”job 信息:

[root@node3 ~]# kill -9 4708
[root@node3 ~]# jps
5281 Jps
3458 QuorumPeerMain
3814 NodeManager
3528 DataNode
3722 ResourceManager
3611 JournalNode

Flink On Yarn HA 安装和配置_flink_03