Flink的重启策略

Flink支持不同的重启策略,这些重启策略控制着job失败后如何重启。集群可以通过默认的重启策略来重启,这个默认的重启策略通常在未指定重启策略的情况下使用,而如果Job提交的时候指定了重启策略,这个重启策略就会覆盖掉集群的默认重启策略。

概览

集群在启动时会伴随一个默认的重启策略,在没有定义具体重启策略时,会使用该默认重启策略,如果在工作提交时指定了一个重启策略,那么该策略会覆盖集群的默认策略。
默认的重启策略可以通过Flink的配置文件flink-conf.yaml指定,配置参数restart-strategy定义了哪个策略被使用。
常用的重启策略:

  • 固定间隔(Fixed delay)
  • 失败率(Failure rate)
  • 无重启(No restart)
  1. 如果checkpoint未启动,就会采用no restart策略。
  2. 如果启动了checkpoint机制,但是未指定重启策略的话,就会采用fixed-delay策略,重试Integer.MAX_VALUE次。

请参考下面的可用重启策略来了解哪些值是支持的。
每个重启策略都有自己的参数来控制它的行为,这些值也可以在配置文件中设置,每个重启策略的描述都包含着各自的配置值信息。

重启策略 重启策略值
Fixed delay fixed-delay
Failure rate failure-rate
No restart None

除了定义一个默认的重启策略之外,你还可以为每一个Job指定它自己的重启策略,这个重启策略可以在ExecutionEnvironment中调用setRestartStrategy()方法来程序化地调用,主意这种方式同样适用于StreamExecutionEnvironment。

实例

下面的例子展示了我们如何为我们的Job设置一个固定延迟重启策略,一旦有失败,系统就会尝试每10秒重启一次,重启3次。

java方式

ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.setRestartStrategy(RestartStrategies.fixedDelayRestart(3, // 尝试重启次数Time.of(10, TimeUnit.SECONDS) // 延迟时间间隔
));

scala方式

val env = ExecutionEnvironment.getExecutionEnvironment()
env.setRestartStrategy(RestartStrategies.fixedDelayRestart(3, // 重启次数Time.of(10, TimeUnit.SECONDS) // 延迟时间间隔
))

重启策略

下面部分描述了重启策略特定的配置项

固定延迟重启策略(Fixed Delay Restart Strategy)

固定延迟重启策略会尝试一个给定的次数来重启Job,如果超过了最大的重启次数,Job最终将失败。在连续的两次重启尝试之间,重启策略会等待一个固定的时间。
重启策略可以配置flink-conf.yaml的下面配置参数来启用,作为默认的重启策略:

restart-strategy: fixed-delay
配置参数 描述 默认值
restart-strategy.fixed-delay.attempts 在Job最终宣告失败之前,Flink尝试执行的次数 1,如果启用checkpoint的话是Integer.MAX_VALUE
restart-strategy.fixed-delay.delay 延迟重启意味着一个执行失败之后,并不会立即重启,而是要等待一段时间。 akka.ask.timeout,如果启用checkpoint的话是1s

例子:

restart-strategy.fixed-delay.attempts: 3
restart-strategy.fixed-delay.delay: 10 s

固定延迟重启也可以在程序中设置:
java:

ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.setRestartStrategy(RestartStrategies.fixedDelayRestart(3, // 重启次数Time.of(10, TimeUnit.SECONDS) // 重启时间间隔
));

scala:

val env = ExecutionEnvironment.getExecutionEnvironment()
env.setRestartStrategy(RestartStrategies.fixedDelayRestart(3, // 重启次数Time.of(10, TimeUnit.SECONDS) // 重启时间间隔
))

失败率重启策略(Failure rate)

失败率重启策略在Job失败后会重启,但是超过失败率后,Job会最终被认定失败。在两个连续的重启尝试之间,重启策略会等待一个固定的时间。
失败率重启策略可以在flink-conf.yaml中设置下面的配置参数来启用:

restart-strategy:failure-rate
配置参数 描述 默认值
restart-strategy.failure-rate.max-failures-per-interval 在一个Job认定为失败之前,最大的重启次数 1
restart-strategy.failure-rate.failure-rate-interval 计算失败率的时间间隔 1分钟
restart-strategy.failure-rate.delay 两次连续重启尝试之间的时间间隔 akka.ask.timeout

例子:

restart-strategy.failure-rate.max-failures-per-interval: 3
restart-strategy.failure-rate.failure-rate-interval: 5 min
restart-strategy.failure-rate.delay: 10 s

失败率重启策略也可以在程序中设置:
Java代码:

ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.setRestartStrategy(RestartStrategies.failureRateRestart(3, // 每个测量时间间隔最大失败次数Time.of(5, TimeUnit.MINUTES), //失败率测量的时间间隔Time.of(10, TimeUnit.SECONDS) // 两次连续重启尝试的时间间隔
));

Scala代码::

val env = ExecutionEnvironment.getExecutionEnvironment()
env.setRestartStrategy(RestartStrategies.failureRateRestart(3, // 每个测量时间间隔最大失败次数Time.of(5, TimeUnit.MINUTES), //失败率测量的时间间隔Time.of(10, TimeUnit.SECONDS) // 两次连续重启尝试的时间间隔
))

无重启策略

Job直接失败,不会尝试进行重启。如果没有启动checkpoint,则默认情况下就是无重启

restart-strategy: none

无重启策略也可以在程序中设置
Java代码:

ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.setRestartStrategy(RestartStrategies.noRestart());

Scala代码:

val env = ExecutionEnvironment.getExecutionEnvironment()
env.setRestartStrategy(RestartStrategies.noRestart())

Flink的重启策略相关推荐

  1. Flink重启策略和故障恢复策略

    当Flink的task发生故障的时候,Flink需要重启出错的task以及其他受到影响的task,以使得作业恢复到正常状态.Flink通过重启策略和故障恢复策略来控制task的重启,重启策略决定是否可 ...

  2. 2021年大数据Flink(二十八):Flink 容错机制 自动重启策略和恢复

    目录 自动重启策略和恢复 重启策略配置方式 重启策略分类 代码演示 手动重启并恢复-了解 1.把程序打包 2.启动Flink集群(本地单机版,集群版都可以) 3.访问webUI 4.使用FlinkWe ...

  3. 1.15.Flink state(状态)管理与恢复、什么是state、Keyed State、Operator State、状态容错(生成快照,恢复快照),checkPoint简介,重启策略等

    1.15.Flink state(状态)管理与恢复 1.15.1.什么是state 1.15.2.状态(State) 1.15.3.Keyed State 1.15.4.Operator State ...

  4. 【Flink】源码-Flink重启策略-简介 Task恢复策略 重启策略监听器

    文章目录 1.概述 3.固定间隔 4.失败率 4.1 案例 5. 无重启策略 5.1 案例 6.实际代码演示 7. Task恢复策略 8.重启策略监听器 8.1 测试 M.参考 1.概述 ​ Flin ...

  5. flink checkpoint 重启_Flink进阶教程:Checkpoint机制原理剖析与参数配置

    在Flink状态管理详解:Keyed State和Operator List State深度解析这篇文章中,我们介绍了Flink的状态都是基于本地的,而Flink又是一个部署在多节点的分布式引擎,分布 ...

  6. docker学习笔记-为容器配置重启策略

    docker容器配置重启策略 docker restart policies docker容器的退出状态码 0 表示正常退出 非0 表示异常退出(退出状态码采用chroot标准) 125 Docker ...

  7. docker容器的重启策略:通过--restart来指定

    Docker容器的重启策略如下: 如:--restart=always no,默认策略,在容器退出时不重启容器 on-failure,在容器非正常退出时(退出状态非0),才会重启容器 on-failu ...

  8. k8s mysql重启_kubernetes Pod 应用自动恢复(重启策略 + 健康检查)简介

    一.重启策略 Always:当容器终止退出后,总是重启容器,默认策略. OnFailure:当容器异常退出(退出状态码非 0)时,才重启容器. Never:当容器终止退出,从不重启容器. yaml 格 ...

  9. .net core i上 K8S(四).netcore程序的pod管理,重启策略与健康检查

    目录 1.pod管理 2.重启策略 3.健康检查 4.进入容器 正文 上一章我们已经通过yaml文件将.netcore程序跑起来了,但还有一下细节问题可以分享给大家. 1.pod管理 1.1创建pod ...

最新文章

  1. Android各版本新特性
  2. 【OpenCV 4开发详解】Canny算法
  3. 100. Same Tree同样的树
  4. mysql数据库迁移到另一台电脑上
  5. 记一次ajax交互问题
  6. nodejs 遍历json数据_PostgreSQL 务实应用(四/5)JSON
  7. SAP License:SAP软件实施要点
  8. HDFS写入HBase
  9. key没有引号的字符串如何转json变为字典格式
  10. SourceTree下载与安装 ---记录一下,如果忘记了再拿来看看
  11. c语言文件分割与合并
  12. bd青鸟Java宠物商店2017
  13. nginx的日志格式记录真实客户端IP
  14. 怎么准备全国计算机二级(C语言)考试?
  15. python制作查询网页_Python制作简单的网页爬虫
  16. SQLyog 的 截位数据库(又叫截断数据库)的作用
  17. CSS基础:text-overflow:ellipsis溢出文本显示省略号的详细方法_CSS教程
  18. 大学jsp实验七--JavaBean在JSP中的应用
  19. 【有利可图网】PS教程:制作千图成像效果
  20. iNFTnews | 86年前的DAO:嗜酒者互诫协会

热门文章

  1. SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」(亲测)
  2. CATALINA_BASE和CATALINA_HOME,多实例tomcat与多版本tomcat运行
  3. python3+requests:get/post请求
  4. 揭开互联网公司的神秘面纱,数据解读那些slay整个行业的互联网公司
  5. PHPStorm无法保存个人设置 ctrl左键无法找到类
  6. linux .vimrc教程,vim配置文件~/.vimrc
  7. 给array添加元素_前囧(06篇)Array 方法详解
  8. java web服务需要哪些基础知识_java web 基础知识
  9. outlook 未安装信息服务器,Outlook Web Access 未初始化并且在客户端访问服务器上的应用程序日志中记录了事件 ID 64...
  10. c语言全国二级考试全对,全国计算机c语言二级考试通用复习资料.doc