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機制