Flink的重启策略
Flink的重启策略
Flink支持不同的重启策略,这些重启策略控制着job失败后如何重启。集群可以通过默认的重启策略来重启,这个默认的重启策略通常在未指定重启策略的情况下使用,而如果Job提交的时候指定了重启策略,这个重启策略就会覆盖掉集群的默认重启策略。
概览
集群在启动时会伴随一个默认的重启策略,在没有定义具体重启策略时,会使用该默认重启策略,如果在工作提交时指定了一个重启策略,那么该策略会覆盖集群的默认策略。
默认的重启策略可以通过Flink的配置文件flink-conf.yaml
指定,配置参数restart-strategy
定义了哪个策略被使用。
常用的重启策略:
- 固定间隔(Fixed delay)
- 失败率(Failure rate)
- 无重启(No restart)
- 如果checkpoint未启动,就会采用no restart策略。
- 如果启动了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的重启策略相关推荐
- Flink重启策略和故障恢复策略
当Flink的task发生故障的时候,Flink需要重启出错的task以及其他受到影响的task,以使得作业恢复到正常状态.Flink通过重启策略和故障恢复策略来控制task的重启,重启策略决定是否可 ...
- 2021年大数据Flink(二十八):Flink 容错机制 自动重启策略和恢复
目录 自动重启策略和恢复 重启策略配置方式 重启策略分类 代码演示 手动重启并恢复-了解 1.把程序打包 2.启动Flink集群(本地单机版,集群版都可以) 3.访问webUI 4.使用FlinkWe ...
- 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 ...
- 【Flink】源码-Flink重启策略-简介 Task恢复策略 重启策略监听器
文章目录 1.概述 3.固定间隔 4.失败率 4.1 案例 5. 无重启策略 5.1 案例 6.实际代码演示 7. Task恢复策略 8.重启策略监听器 8.1 测试 M.参考 1.概述 Flin ...
- flink checkpoint 重启_Flink进阶教程:Checkpoint机制原理剖析与参数配置
在Flink状态管理详解:Keyed State和Operator List State深度解析这篇文章中,我们介绍了Flink的状态都是基于本地的,而Flink又是一个部署在多节点的分布式引擎,分布 ...
- docker学习笔记-为容器配置重启策略
docker容器配置重启策略 docker restart policies docker容器的退出状态码 0 表示正常退出 非0 表示异常退出(退出状态码采用chroot标准) 125 Docker ...
- docker容器的重启策略:通过--restart来指定
Docker容器的重启策略如下: 如:--restart=always no,默认策略,在容器退出时不重启容器 on-failure,在容器非正常退出时(退出状态非0),才会重启容器 on-failu ...
- k8s mysql重启_kubernetes Pod 应用自动恢复(重启策略 + 健康检查)简介
一.重启策略 Always:当容器终止退出后,总是重启容器,默认策略. OnFailure:当容器异常退出(退出状态码非 0)时,才重启容器. Never:当容器终止退出,从不重启容器. yaml 格 ...
- .net core i上 K8S(四).netcore程序的pod管理,重启策略与健康检查
目录 1.pod管理 2.重启策略 3.健康检查 4.进入容器 正文 上一章我们已经通过yaml文件将.netcore程序跑起来了,但还有一下细节问题可以分享给大家. 1.pod管理 1.1创建pod ...
最新文章
- Android各版本新特性
- 【OpenCV 4开发详解】Canny算法
- 100. Same Tree同样的树
- mysql数据库迁移到另一台电脑上
- 记一次ajax交互问题
- nodejs 遍历json数据_PostgreSQL 务实应用(四/5)JSON
- SAP License:SAP软件实施要点
- HDFS写入HBase
- key没有引号的字符串如何转json变为字典格式
- SourceTree下载与安装 ---记录一下,如果忘记了再拿来看看
- c语言文件分割与合并
- bd青鸟Java宠物商店2017
- nginx的日志格式记录真实客户端IP
- 怎么准备全国计算机二级(C语言)考试?
- python制作查询网页_Python制作简单的网页爬虫
- SQLyog 的 截位数据库(又叫截断数据库)的作用
- CSS基础:text-overflow:ellipsis溢出文本显示省略号的详细方法_CSS教程
- 大学jsp实验七--JavaBean在JSP中的应用
- 【有利可图网】PS教程:制作千图成像效果
- iNFTnews | 86年前的DAO:嗜酒者互诫协会
热门文章
- SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」(亲测)
- CATALINA_BASE和CATALINA_HOME,多实例tomcat与多版本tomcat运行
- python3+requests:get/post请求
- 揭开互联网公司的神秘面纱,数据解读那些slay整个行业的互联网公司
- PHPStorm无法保存个人设置 ctrl左键无法找到类
- linux .vimrc教程,vim配置文件~/.vimrc
- 给array添加元素_前囧(06篇)Array 方法详解
- java web服务需要哪些基础知识_java web 基础知识
- outlook 未安装信息服务器,Outlook Web Access 未初始化并且在客户端访问服务器上的应用程序日志中记录了事件 ID 64...
- c语言全国二级考试全对,全国计算机c语言二级考试通用复习资料.doc