当前位置: 首页 > news >正文

Flink学习(六)-容错处理

前言

Flink 是通过状态快照实现容错处理

一、State Backends

由 Flink 管理的 keyed state 是一种分片的键/值存储,每个 keyed state 的工作副本都保存在负责该键的 taskmanager 本地中。

  • 一种基于 RocksDB 内嵌 key/value 存储将其工作状态保存在磁盘上;
  • 一种基于堆的 state backend,将其工作状态保存在 Java 的堆内存。

针对第二种,又细化出如下两种类型

  • FsStateBackend,将其状态快照持久化到分布式文件系统;
  • MemoryStateBackend,它使用 JobManager 的堆保存状态快照。

具体参考如下表格

名称Working State状态备份快照
RocksDBStateBackend本地磁盘(tmp dir)分布式文件系统全量 / 增量
  • 支持大于内存大小的状态
  • 经验法则:比基于堆的后端慢10倍
FsStateBackendJVM Heap分布式文件系统全量
  • 快速,需要大的堆内存
  • 受限制于 GC
MemoryStateBackendJVM HeapJobManager JVM Heap全量
  • 适用于小状态(本地)的测试和实验

二、Checkpoint Storage

作用

Flink 用来定期对每个算子的所有状态进行持久化快照,并将快照复制到更持久的地方。

分类

  • 一种持久保存其状态快照 到一个分布式文件系统;
  • 另一种是使用 JobManager 的堆。
名称状态备份
FileSystemCheckpointStorage分布式文件系统
  • 支持非常大的状态大小
  • 高度可靠
  • 推荐用于生产部署
JobManagerCheckpointStorageJobManager JVM Heap
  • 适合小状态(本地)的测试和实验

 三、状态快照

定义

  • 快照 – 是 Flink 作业状态全局一致镜像的通用术语。快照包括指向每个数据源的指针(例如,到文件或 Kafka 分区的偏移量)以及每个作业的有状态运算符的状态副本,该状态副本是处理了 sources 偏移位置之前所有的事件后而生成的状态。

  • Checkpoint – 一种由 Flink 自动执行的快照,其目的是能够从故障中恢复。Checkpoints 可以是增量的,并为快速恢复进行了优化。

  • 外部化的 Checkpoint – 通常 checkpoints 不会被用户操纵。Flink 只保留作业运行时的最近的 n 个 checkpoints(n 可配置),并在作业取消时删除它们。但你可以将它们配置为保留,在这种情况下,你可以手动从中恢复。

  • Savepoint – 用户出于某种操作目的(例如有状态的重新部署/升级/缩放操作)手动(或 API 调用)触发的快照。Savepoints 始终是完整的,并且已针对操作灵活性进行了优化。

 状态快照的工作原理

当 checkpoint coordinator(job manager 的一部分)指示 task manager 开始 checkpoint 时,它会让所有 sources 记录它们的偏移量,并将编号的 checkpoint barriers 插入到它们的流中。这些 barriers 流经 job graph,标注每个 checkpoint 前后的流部分。

Checkpoint n 将包含每个 operator 的 state,这些 state 是对应的 operator 消费了严格在 checkpoint barrier n 之前的所有事件,并且不包含在此(checkpoint barrier n)后的任何事件后而生成的状态。

当 job graph 中的每个 operator 接收到 barriers 时,它就会记录下其状态。拥有两个输入流的 Operators(例如 CoProcessFunction)会执行 barrier 对齐(barrier alignment) 以便当前快照能够包含消费两个输入流 barrier 之前(但不超过)的所有 events 而产生的状态。

Flink 的 state backends 利用写时复制(copy-on-write)机制允许当异步生成旧版本的状态快照时,能够不受影响地继续流处理。只有当快照被持久保存后,这些旧版本的状态才会被当做垃圾回收。

 

相关文章:

Flink学习(六)-容错处理

前言 Flink 是通过状态快照实现容错处理 一、State Backends 由 Flink 管理的 keyed state 是一种分片的键/值存储,每个 keyed state 的工作副本都保存在负责该键的 taskmanager 本地中。 一种基于 RocksDB 内嵌 key/value 存储将其工作状态保存在磁盘上&#x…...

设计模式(020)行为型之备忘录模式

备忘录模式是一种行为型设计模式,用于在不破坏封装性的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后可以将该对象恢复到之前的状态。这种模式通常用于需要记录对象状态历史、撤销操作或实现“回到过去”功能的场景。 在…...

Android 系统锁屏息屏休眠时Handler CountDownTimer计时器停止运行问题解决

1.前言 在进行app开发的过程中,在进行某些倒计时的功能项目开发中,会遇到在锁屏息屏休眠一段时间的情况下, 在唤醒屏幕的情况下发现倒计时已经停止了,这是因为在系统处于休眠的状态下cpu也停止了工作,所以 handler和countdowntimer倒计时也停止了工作,接下来就来看怎么样…...

Java中如何提取视频文件的缩略图

在Java中,可以使用FFmpeg库来提取视频文件的缩略图。以下是一种使用FFmpeg的方法来提取视频缩略图的示例代码: import java.io.File; import java.io.IOException;public class VideoThumbnailExtractor {public static void main(String[] args) {Stri…...

总结 HashTable, HashMap, ConcurrentHashMap 之间的区别

前言 HashMap 本身不是线程安全的. 在多线程环境下使用哈希表可以使用: Hashtable(不推荐使用)ConcurrentHashMap(推荐使用) HashMap HashMap数据结构 根本: 数组 链表(jdk1.7)/数组链表红黑…...

《剑指 Offer》专项突破版 - 面试题 107 : 矩阵中的距离(C++ 实现)

题目链接:矩阵中的距离 题目: 输入一个由 0、1 组成的矩阵 M,请输出一个大小相同的矩阵 D,矩阵 D 中的每个格子是矩阵 M 中对应格子离最近的 0 的距离。水平或竖直方向相邻的两个格子的距离为 1。假设矩阵 M 中至少有一个 0。 …...

揭秘智慧礼品背后的故事

如若不是从事技术行业,在罗列礼品清单时,可能不会想到 “数据”,但幸运的是,我们想到了。如何将AI技术应用到当季一些最受青睐的产品中去,训练数据是这一智能技术的背后动力。很多电子设备或名称中带有“智能”一词的设…...

NVM的安装与配置

目录 一、简介二、下载2.1、windows环境下载地址2.2、安装 三、配置3.1、查看可安装版本3.2、安装版本3.3、使用和切换版本3.4、模块配置 四、其他4.1、全局安装pnpm4.2、常用nvm命令 一、简介 NVM,全称为Node Version Manager,是一个流行的命令行工具&a…...

[Java EE] 多线程(一) :线程的创建与常用方法(上)

1. 认识线程 1.1 概念 1.1.1 什么是线程 ⼀个线程就是⼀个"执⾏流".每个线程之间都可以按照顺序执⾏⾃⼰的代码.多个线程之间"同时"执⾏ 着多份代码. 还是回到我们之前的银⾏的例⼦中。之前我们主要描述的是个⼈业务,即⼀个⼈完全处理⾃⼰的…...

Linux安装docker(含Centos系统和Ubuntu系统)

一、Centos系统 1. 卸载旧版本依赖 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 2. 设置仓库 安装所需的软件包。yum-utils 提供了 yum-config-manager &…...

【第十五届蓝桥杯大赛软件赛省赛】———— C/C++ 大学B组

蓝桥杯2024年15届省赛b组原题献上...

Redis+lua脚本限制ip多次输入错误密码

Redislua脚本限制ip多次输入错误密码 不能锁username,因为如果有人恶意保留破解密码的话。会导致用户本人无法登录。 这里我采用 以ip的方式进行锁定。利用redis 设置key:ip。value:当前ip尝试登录的次数 实现逻辑 逻辑简单,假设…...

全球顶级的低代码开发平台,你知道几个?

什么是低代码开发平台? 低码开发平台是一个应用程序,提供图形用户界面编程,从而以非常快的速度开发代码,减少了传统的编程工作。 这些工具有助于快速开发代码,最大限度地减少手工编码的努力。这些平台不仅有助于编码,而且还能快速安装和部署。 低码开发工具的好处 低代码平…...

11-1.Vue2.x基本列表—v-for

文章目录 Vue2.x基本列表—v-for Vue2.x基本列表—v-for <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>基本列表</title><script type"text/javascript" src"../js/vue.j…...

一本书精通推荐算法,轻松搞定入门、面试、进阶

当前互联网高速发展&#xff0c;用户规模和内容规模均迅猛提升。 身处信息严重过载的时代&#xff0c;如何让用户从海量信息中发现自己感兴趣的内容&#xff0c;成了很多公司的核心问题。 在此背景下&#xff0c;搜索系统和推荐系统应运而生。 前者主要解决用户主动寻找内容…...

ADB的基本语法及常用命令

学习网址 ADB命令的基本语法如下&#xff1a; adb [-d|-e|-s <serialNumber>] <command> 如果有多个设备/模拟器连接&#xff0c;则需要为命令指定目标设备。 参数及含义如下&#xff1a; 常用命令如下&#xff1a; 1. 启动ADB服务 adb start-server 2. 停止…...

Linux之bpfjit(2)使用分析和mini-tcpdump实现

Linux之bpfjit(2)使用分析和mini-tcpdump实现 Author: Once Day Date: 2024年4月13日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可以参考专栏&#xff1a;…...

adb常用命令汇总

Android Debug Bridge (adb) 是一个多功能命令行工具&#xff0c;它允许你与连接的Android设备或在电脑上的Android模拟器进行通信。下面列出了一些常用的adb命令&#xff1a; 启动adb服务&#xff1a; adb start-server停止adb服务&#xff1a; adb kill-server查看已连接的设…...

JVM虚拟机(三)垃圾回收简介、垃圾回收算法、分代回收、垃圾回收器种类、G1垃圾回收器

目录 一、什么是垃圾回收&#xff1f;1.1 什么是垃圾回收&#xff1f;1.2 什么对象能被垃圾回收&#xff1f;1&#xff09;引用计数法2&#xff09;可达性分析算法 二、JVM 垃圾回收算法2.1 标记清除算法2.2 标记整理算法&#xff08;标记压缩算法&#xff09;2.3 复制算法2.4 …...

JavaScript基础:js介绍、变量、数据类型以及类型转换

目录 介绍 引入方式 内部方式 外部形式 注释和结束符 单行注释 多行注释 结束符 输入和输出 输出 输入 变量 声明 赋值 关键字 变量名命名规则 常量 数据类型 数值类型 字符串类型 布尔类型 undefined 类型转换 隐式转换 显式转换 Number ✨介绍 &a…...

联邦学习与RAG融合:构建隐私保护的跨机构智能检索系统

1. 项目概述与核心价值最近在折腾一个跨机构文档智能检索的原型&#xff0c;核心需求是&#xff1a;在不共享原始数据的前提下&#xff0c;让多个参与方&#xff08;比如几家医院、几个研究实验室&#xff09;能够联合起来&#xff0c;构建一个强大的、统一的文档知识库&#x…...

ETS2LA:为《欧洲卡车模拟2》带来终极智能驾驶体验的5大核心功能

ETS2LA&#xff1a;为《欧洲卡车模拟2》带来终极智能驾驶体验的5大核心功能 【免费下载链接】Euro-Truck-Simulator-2-Lane-Assist Plugin based interface program for ETS2/ATS. 项目地址: https://gitcode.com/gh_mirrors/eur/Euro-Truck-Simulator-2-Lane-Assist 想…...

YOLO26改进| downsample |网络深层多分支互补鲁棒下采样模块

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 本文给大家带来的教程是将YOLO26的下采样替换为DRFD来提取特征。文章在介绍主要的原理后&#xff0c;将手把手教学如何进行模块的代码添加和修…...

LeetCode 岛屿数量题解

LeetCode 岛屿数量题解 题目描述 给定一个二维网格地图 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;&#xff0c;计算岛屿的数量。 示例&#xff1a; 输入&#xff1a;grid [ ["1","1","1","1","0"], …...

从一次内部渗透测试说起:我是如何利用SSRF漏洞,通过Gopher协议拿下Redis的

渗透测试实战&#xff1a;SSRF漏洞到Redis未授权访问的完整攻击链剖析 在一次常规的企业内部渗透测试中&#xff0c;我发现了一个看似普通的SSRF漏洞&#xff0c;却意外打开了通往内网核心系统的大门。这个故事不是教科书式的漏洞复现&#xff0c;而是一个真实攻击者视角下的完…...

南京彩钢瓦屋面防水供应商

在南京&#xff0c;彩钢瓦屋面广泛应用于各类建筑&#xff0c;然而其防水问题一直是困扰众多业主的难题。选择一家靠谱的彩钢瓦屋面防水供应商至关重要。今天就为大家详细介绍雨中行修缮工程有限公司&#xff0c;同时也对比其他一些大厂&#xff0c;看看雨中行修缮为何能在市场…...

告别答辩PPT焦虑:百考通AI如何帮你高效搞定毕业答辩

简洁专业的PPT模板&#xff0c;精准的AI内容生成&#xff0c;在线编辑与一键美化——让毕业答辩的最后一步走得更从容。 又到了一年毕业季&#xff0c;当论文终于定稿&#xff0c;你是否发现自己又面临一座新的大山——毕业答辩PPT&#xff1f;面对几十页的论文文档&#xff0c…...

从癌症研究到企业风控:用Python实战Cox比例风险模型(附完整代码与数据)

从医学到商业&#xff1a;Python实战Cox风险模型的企业级应用 在医疗领域&#xff0c;我们关心患者存活时间&#xff1b;在商业世界&#xff0c;我们关注客户生命周期。看似迥异的场景背后&#xff0c;都隐藏着同一个数学工具的身影——Cox比例风险模型。这个诞生于1972年的生存…...

开源项目remote2mac:用Windows远程桌面无缝控制macOS

1. 项目概述&#xff1a;远程桌面连接的另一条路如果你是一名需要在Windows电脑上远程控制macOS设备的开发者、设计师或者运维人员&#xff0c;那么“远程桌面”这个需求对你来说一定不陌生。传统的方案&#xff0c;比如微软的RDP&#xff08;远程桌面协议&#xff09;对Window…...

91160-cli:健康160平台终极挂号神器,5分钟上手解决抢号难题

91160-cli&#xff1a;健康160平台终极挂号神器&#xff0c;5分钟上手解决抢号难题 【免费下载链接】91160-cli 健康160全自动挂号脚本&#xff0c;捡漏神器 项目地址: https://gitcode.com/gh_mirrors/91/91160-cli 你是否还在为抢不到专家号而烦恼&#xff1f;面对健康…...