Flink 版本1.7.2
目录
在运行高可用性YARN群集时,我们不会运行多个JobManager(ApplicationMaster)实例,而只会运行一个,由YARN在失败时重新启动。确切的行为取决于您使用的特定YARN版本。
配置:
最大 Application Master 尝试数量 (yarn-site.xml)
您必须配置为尝试 application masters 的最大数量的 YARN的设置yarn-site.xml
:
<property>
<name>yarn.resourcemanager.am.max-attempts</name>
<value>4</value>
<description>
The maximum number of application master execution attempts.
</description>
</property>
当前YARN版本的默认值为2(表示容忍一个JobManager失败)。
申请尝试次数:
除HA配置(参见上文)外,您还必须配置最大尝试次数conf/flink-conf.yaml
:
yarn.application-attempts: 10
这意味着在YARN未通过应用程序(9次重试+ 1次初始尝试)之前,应用程序可以重新启动9次以进行失败尝试。如果YARN 算子操作需要,YARN可以执行其他重新启动:抢占,节点硬件故障或重新启动或NodeManager重新同步。这些重启不计入yarn.application-attempts
,请参阅Jian Fang的博客文章。重要的是要注意yarn.resourcemanager.am.max-attempts
应用程序重新启动的上限。因此,Flink中设置的应用程序尝试次数不能超过启动YARN的YARN群集设置。(yarn.resourcemanager.am.max-attemps).
yarn.application-attempts <= yarn.resourcemanager.am.max-attempts
容器关闭行为
- YARN 2.3.0 <版本<2.4.0。如果应用程序主机失败,则重新启动所有容器。
- YARN 2.4.0 <版本<2.6.0。TaskManager容器在应用程序主故障期间保持活动状态。这具有以下优点:启动时间更快并且用户不必再等待再次获得容器资源。
- YARN 2.6.0 <=版本:将尝试失败有效性间隔设置为Flinks的Akka超时值。尝试失败有效性间隔表示只有在系统在一个间隔期间看到最大应用程序尝试次数后才会终止应用程序。这避免了持久的工作会耗尽它的应用程序尝试。
注意:Hadoop YARN 2.4.0有一个主要错误(在2.5.0中修复),阻止重新启动的Application Master / Job Manager容器重启容器。有关详细信息,请参阅FLINK-4142。我们建议至少在YARN上使用Hadoop 2.5.0进行高可用性设置。
示例:高度可用的YARN会话
1、 配置HA模式和 zookeeper.quorum 在conf/flink-conf.yaml
:
high-availability: zookeeper
high-availability.storageDir: hdfs:///flink/ha/
high-availability.zookeeper.quorum: big-data-2:2181,big-data-3:2181,big-data-4:2181
high-availability.zookeeper.path.root: /flink
high-availability.cluster-id: /cluster_yarn_flink
注: 原先hadoop 集群已搭建了zookeeper集群,直接引用即可.
2、启动Flink 集群.
./yarn-session.sh -n 3 -jm 1024 -tm 1024 -s 3 -nm FlinkOnYarnSession -d -st
查看zookeeper ,可以看到zookeeper 已注册flink 相关信息.
3、验证
[root@big-data-4 ~]# jps
56000 YarnSessionClusterEntrypoint
杀死上面的进程,Flink UI 无法访问。 过一段时间,又可以访问 。查看信息,发现JobManager 位置已变换到其他主机.