Flink-conf.yaml
high-availability: zookeeper
high-availability.zookeeper.quorum: localhost:2181
high-availability.storageDir: hdfs:///flink/recovery
high-availability.zookeeper.path.root: /flink
yarn.application-attempts: 10
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.application-attempts中的值不能超过yarn-site.xml里的yarn.application-attempts值,flink on yarn的高可用是利用container失败后,yarn自动重启container,与传统的stand-by模式不一样,传统的stand-by高可用是启用多个master,一个master挂了后,从其余的master里选举出新的master,从而保证系统的高可用,从理论上讲,只要一直有备用的master,系统就一直是可用的,yarn的重启机制是有次数限制的,超过yarn.application-attempts指定的值后,失败后就直接失败了
在flink高可用下,container失败对jobmanager和taskmanager的影响
如果失败的次数低于yarn.application-attempts,jobmanager会自动恢复,并自动重启flink上所有的任务;如果超出yarn.application-attempts次数,则所有的任务都会失败
运行taskmanager的container失败,如果任务里启用了checkpoint机制,flink会自动启动任务,与yarn.application-attempts的值没有关系;
如果没有启用checkpoint,container失败,任务也就失败了,因此在写flink任务时,建议在flink程序中启用checkpoint机制