Flink学习(十九) 容错机制
主要内容:
一致性检查点(checkpoint)
从检查点恢复到状态
Flink检查点算法
保存点(savepoint)
一致性检查点(checkpoint)

Flink故障恢复机制的核心,就是应用状态的一致性检查点。有状态流应用的一致性检查点,其实就是所有任务的状态,在某个时间点的一份拷贝(可以理解为一份快照),这个时间点,应该是所有任务都恰好处理完一个相同的输入数据的时候。
从检查点恢复状态
1、 在执行流应用程序期间,Flink会定期保存状态的一致性检查点。如果发生故障,Flink将会使用最近的检查点来一致恢复应用程序的状态,并重新启动处理流程。

2、遇到故障之后,第一步就是重启应用,这里在代码中可以设置重启策略。

//设置重启策略 fixedDelayRestart(尝试的次数,两次尝试之间的延迟ms )
env.setRestartStrategy(RestartStrategies.fixedDelayRestart(3,500)) //失败率重启
env.setRestartStrategy(RestartStrategies.failureRateRestart(3,org.apache.flink.api.common.time.Time.seconds(300),org.apache.flink.api.common.time.Time.seconds(10)))
3、第二部就是从checkpoint中读取状态,将状态重置,从检查点重新启动应用程序之后,其内部状态与检查点完成时的状态完全相同。

4、第三步,开始消费并处理检查点到发生故障之间的所有数据。这种检查点的保存和恢复机制可以为应用程序状态提供“精确一次”(Exactly-once)的一致性,因为所有算子都会保存检查点并恢复其所有状态。这样一来,所有的输入流就都会被重置到检查点完成时的位置。

检查点的实现算法
1、一种简单的想法:暂停应用,保存状态到检查点,在重新恢复应用
2、Flink的改进实现:基于Chandy-Lamport算法的分布式快照,将检查点的保存和数据处理分离开,不暂停整个应用。
检查点分界线(Checkpoint Barrier):Flink的检查点算法用到了一种称为分界线(barrier)的特殊数据形式,用来把一条流上的数据按照不同的检查点分开。分界线之前到来的数据导致的状态更改,都会被包含在当前分界线所属的检查点中;而基于分界线之后的数据导致的所有更改,就会包含在之后的检查点中。
算法流程:
1、

2、

3、

4、

5、

6、

7、

代码中设置体现:
val env = StreamExecutionEnvironment.getExecutionEnvironment
env.setParallelism(1)
env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)
//开启checkpoint 传入参数代表每隔多久进行checkpoint
env.enableCheckpointing(60000)
env.getCheckpointConfig.setCheckpointingMode(CheckpointingMode.AT_LEAST_ONCE)
env.getCheckpointConfig.setCheckpointTimeout(100000)
//checkpoint失败的时候,是否将整个job给消灭掉 默认是true 是消灭了
env.getCheckpointConfig.setFailOnCheckpointingErrors(false)
//当前最大同时进行checkpoint的数量 (可能间隔太小 处理时间又长)默认是1
env.getCheckpointConfig.setMaxConcurrentCheckpoints(1)
//两个checkpoint的最小时间间隔
env.getCheckpointConfig.setMinPauseBetweenCheckpoints(100)
//开启checkpoint外部持久化 本身checkpoint如果job失败了,外部的checkpoint是会被清理的
//开启后,即使是job任务失败了,必须手动的清理才会清掉
//DELETE_ON_CANCELLATION 手动取消就没了
//RETAIN_ON_CANCELLATION 即使手动了 也要留着
env.getCheckpointConfig.enableExternalizedCheckpoints(ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION)
Flink学习(十九) 容错机制的更多相关文章
- Storm学习笔记 - 消息容错机制
Storm学习笔记 - 消息容错机制 文章来自「随笔」 http://jsynk.cn/blog/articles/153.html 1. Storm消息容错机制概念 一个提供了可靠的处理机制的spo ...
- 总结Flink状态管理和容错机制
本文来自8月11日在北京举行的 Flink Meetup会议,分享来自于施晓罡,目前在阿里大数据团队部从事Blink方面的研发,现在主要负责Blink状态管理和容错相关技术的研发. 本文主要内容如 ...
- Flink状态管理和容错机制介绍
本文主要内容如下: 有状态的流数据处理: Flink中的状态接口: 状态管理和容错机制实现: 阿里相关工作介绍: 一.有状态的流数据处理# 1.1.什么是有状态的计算# 计算任务的结果不仅仅依赖于输入 ...
- 强化学习(十九) AlphaGo Zero强化学习原理
在强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)中,我们讨论了MCTS的原理和在棋类中的基本应用.这里我们在前一节MCTS的基础上,讨论下DeepMind的AlphaGo Zero强化学 ...
- Spring学习(十九)----- Spring的五种事务配置详解
前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的. ...
- Scala学习十九——解析
一.本章要点 文法定义中的二选一.拼接.选项和重复在Scala组合子解析器中对应|.~.opt和rep 对于RegexParsers而言,字符串字面量和正则表达式匹配的是词法单元 用^^来处理解析结果 ...
- MYSQL数据库学习十六 安全性机制
16.1 MYSQL数据库所提供的权限 16.1.1 系统表 mysql.user 1. 用户字段 Host:主机名: User:用户名: Password:密码. 2. 权限字段 以“_priv”字 ...
- python学习(十九)常见的第三方库
原文链接:http://www.limerence2017.com/2017/12/28/python19/#more 介绍几个python中常见的第三方库. Pillow Pillow简称PIL,是 ...
- JavaWeb---总结(十九)Session机制
一.术语session session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session.有时候我们可 ...
- Android学习十九:ContentProvider初步
一.Content Provider基本概念 1.ContentProvider为存储和获取数据提供了统一的接口.ContentProvide对数据进行封装.不用关心数据存储的细节.使用表的形式来组织 ...
随机推荐
- GienTech动态|入选软件和信息技术服务名牌企业;荣获城市数字化转型优秀案例;参加第四届深圳国际人工智能展
中电金信入选"2023第二届软件和信息技术服务名牌企业" 近日,中国电子信息行业联合会发布了"2023第二届软件和信息技术服务名牌企业"名单,中电金信入 ...
- 【Python】HTML中Base64存储的图片转为本地图片文件
我用jupyter notebook写了笔记之后,想导出markdown,然后导出不了,我就只能导出html,结果导出的html存储图片用的base64的方式-- 于是我就要把导出的html文档里面的 ...
- 把 Windows 装进 Docker 容器里
本篇文章聊聊如何在 Docker 里运行 Windows 操作系统, Windows in Docker Container(WinD). 写在前面 我日常使用 macOS 和 Ubuntu 来学习和 ...
- Linux新用户登录时出现“-bash-4.2$”的解决办法
Linux服务器新建的用户在登录时显示"-bash-4.2$",而不是"user@hostname"的显示方式,出现此问题的原因是在添加普通用户时,用户家目录下 ...
- Qt编写安防视频监控系统28-摄像机点位
一.前言 摄像机点位的功能主要是在图片地图和在线离线地图上设置对应摄像机的位置,然后双击可以实时预览对应摄像机的视频,在图片地图上拖动摄像机图标到对应位置,系统会自动保存位置信息,在网页地图上的摄像机 ...
- elementPlus 问题总结
第一次搞,遇上很多弱智问题,记录一下 安装elementPlus $ npm install element-plus --save 全局引入 import ElementPlus from 'ele ...
- 不为人知的网络编程(十六):深入分析与解决TCP的RST经典异常问题
本文由腾讯技术kernel分享,原题"TCP经典异常问题探讨与解决",下文进行了排版和内容优化等. 1.引言 TCP的经典异常问题无非就是丢包和连接中断,在这里我打算与各位聊一聊T ...
- Solution Set - “也许我们早已经共鸣在那约定之地”
目录 0.「AGC 024D」Isomorphism Freak 1.「APIO 2018」「洛谷 P4631」选圆圈 2.「UR #2」「UOJ #31」猪猪侠再战括号序列 3.「UR #3」「UO ...
- Solution -「LOJ #6895」Yet Another NPC Problem
\(\mathscr{Description}\) Link. 给定 \(l,m\),求当 \(k=m,m+1,\dots,m+l-1\) 时,所有 \(k\) 阶有标号简单无向图中,最大团大 ...
- WPF create Flower shape
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...