flink 高可用 high-availability 配置的重试次数无效问题

6 篇文章 0 订阅
2 篇文章 0 订阅

问题背景

我根据这篇博客https://blog.csdn.net/cndotaci/article/details/106870413的介绍,配置了flink基于yarn的高可用,测试时发现配置的任务失败重试2次没有生效,我测试到第6次时,任务仍然能够被yarn拉起

在这里插入图片描述

如上图,除第一次手动启动外,下面的5次都是yarn的HA生效自动拉起。

那么,下面配置中的重试次数为什么没有生效?

flink版本:1.10.0

flink-conf.yaml配置:

$ grep -v ^# flink-conf.yaml |grep -v ^$
jobmanager.rpc.address: localhost
jobmanager.rpc.port: 6123
jobmanager.heap.size: 1024m
taskmanager.memory.process.size: 1568m
taskmanager.numberOfTaskSlots: 1
parallelism.default: 1
high-availability: zookeeper
high-availability.storageDir: hdfs:///flink/ha/
high-availability.zookeeper.quorum: hadoop-cluster-master1,hadoop-cluster-master2,hadoop-cluster-core1
state.checkpoints.dir: hdfs:///flink/checkpoint
state.savepoints.dir: hdfs:///flink/flink-savepoints
state.checkpoints.num-retained:60
state.backend.incremental: true
jobmanager.execution.failover-strategy: region
jobmanager.archive.fs.dir: hdfs:///flink/flink-jobs/
historyserver.web.port: 8082
historyserver.archive.fs.dir: hdfs:///flink/flink-jobs/
historyserver.archive.fs.refresh-interval: 10000
# HA重试次数
yarn.application-attempts: 2

ssh到jm节点,手动kill任务的操作日志:

[root@hadoop-cluster-task48 ~]# jps
34785 YarnTaskExecutorRunner
16853 YarnTaskExecutorRunner
17527 PrestoServer
33289 YarnTaskExecutorRunner
18026 YarnJobClusterEntrypoint
20283 Jps
39599 NodeManager
[root@hadoop-cluster-task48 ~]# kill -9 18026
[root@hadoop-cluster-task48 ~]# jps
34785 YarnTaskExecutorRunner
16853 -- process information unavailable
17527 PrestoServer
21383 Jps
33289 YarnTaskExecutorRunner
20412 YarnJobClusterEntrypoint
39599 NodeManager
[root@hadoop-cluster-task48 ~]# kill -9 20412
[root@hadoop-cluster-task48 ~]# jps
34785 YarnTaskExecutorRunner
21926 YarnJobClusterEntrypoint
23207 Jps
17527 PrestoServer
33289 YarnTaskExecutorRunner
39599 NodeManager
[root@hadoop-cluster-task48 ~]# kill -9 21926
[root@hadoop-cluster-task48 ~]# jps
34785 YarnTaskExecutorRunner
23318 YarnJobClusterEntrypoint
26279 Jps
17527 PrestoServer
33289 YarnTaskExecutorRunner
39599 NodeManager
[root@hadoop-cluster-task48 ~]# kill -9 23318

原因

参数yarn.application-attempts,与另外一个参数有关系:yarn.application-attempt-failures-validity-interval,原文档描述:The failure number will no take attempt failures which happen out of the validityInterval into failure count。

大概意思是需要在设置的这个interval时间内失败重试,才会认为flink job是进行了一次失败重试,attempts的计数才会加1。

如果超过这个interval时间才进行的失败重试,并不会为attempts计数。

仍以最开始的图和如下配置为例:

# 最大重试次数,包含首次启动,配置为2(1次首次启动+1次yarn失败重试)
yarn.application-attempts:2,
# 只有在10s内flink job失败后被yarn重新拉起才算做1次attempts。
yarn.application-attempt-failures-validity-interval = 10000(默认值,10s)

任务19:09首次启动,yarn分别在19:11和19:16进行了失败重启,因为默认的interval为10秒,所以这两次重启都没有为attempts计数。

如果将interval改为10分钟,19:09首次启动时attempts计数,值为1,19:11的重启attempts再次计数,值为2,此时达到了配置的2次,将不会再有19:16的重启。

ps:参数yarn.application-attempt-failures-validity-interval为hadoop的ResourceManager API 参数,详见https://hadoop.apache.org/docs/r3.1.0/hadoop-yarn/hadoop-yarn-site/ResourceManagerRest.html#Cluster_Application_Attempts_API

另,在flink应用开启了checkpoint的情况下,通过HA拉起的任务,仍然可以重用上次任务失败时在checkpoint保存的state数据。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值