大数据学习之Flink、10分钟了解Flink的核心组件以及它们的工作原理

 第一章、Flink的容错机制

第二章、Flink核心组件和工作原理

第三章、Flink的恢复策略

第四章、Flink容错机制的注意事项

第五章、Flink的容错机制与其他框架的容错机制相比较


目录

第二章、Flink核心组件和工作原理

Ⅰ、核心组件

1. Checkpoint组件:

2. Savepoint组件:

3. Barrier组件

4. State Backend组件

5. Recovery Strategy组件

6.‌Failover Strategy组件

7.‌Job Restart Strategy组件

Ⅱ、核心组件的工作原理

1. Checkpoint工作原理:

2. Savepoint工作原理:


第二章、Flink核心组件和工作原理

Ⅰ、核心组件

  • Flink的容错机制的核心组件包括CheckpointSavepoint。等等.. .. ..

1. Checkpoint组件:

一致性检查点

  • Checkpoint是用于容错和恢复的机制

  • CheckpointFlink实现容错机制最核心的功能组件,也是Flink四大基石之一,它在数据流处理过程中定期捕获作业状态的快照,并将其存储在可靠的存储系统中。

  • 当作业发生故障时,Flink 可以从最近的 Checkpoint 恢复,重新处理数据流,以保证数据的完整性和一致性。Checkpoint 的频率和大小可以通过配置参数进行设置。

2. Savepoint组件:

保存点

  • Savepoint则是用备份机制,于手动恢复的点。

  • SavepointFlink提供的一种备份机制,用于将作业的状态保存到一个指定的位置。

  • 与 Checkpoint 不同,Savepoint 不是为了容错而设计的,而是为了在升级作业或修改作业时能够恢复到之前的状态。通过创建一个 Savepoint,用户可以确保在升级或修改作业后能够回滚到之前的状态,而不会丢失数据或影响数据处理的正确性。

3. Barrier组件

分界线

  • 在检查点过程中,Flink使用分界线来确保到达某个检查点之前的所有数据变更都被包含在该检查点中

  • 分界线是一种特殊的‌数据形式‌,它沿着数据流向下传递,当所有相关的任务都收到了分界线,那么就可以认为该检查点完成了。

4. State Backend组件

状态后端

  • 状态后端是负责存储和管理任务状态的组件。

  • Flink支持多种状态后端实现,包括内存状态后端MemoryStateBackend‌、‌文件系统状态后端FsStateBackend‌和‌RocksDB状态后端RocksDBStateBackend等。

  • 状态后端负责将任务的状态保存到检查点,并在故障发生时从检查点恢复数据状态。

5. Recovery Strategy组件

恢复策略

  • 恢复策略定义了在发生故障时,如何从检查点恢复数据状态

  • Flink提供了多种恢复策略,包括固定延时重启策略失败率重启策略等,

  • 用户可以根据应用的需求进行定制。

6.‌Failover Strategy组件

故障恢复策略

故障恢复策略是Flink容错机制的一部分,它规定了在单个任务失败时,应如何恢复。Flink支持多种故障恢复策略,如RestartAllRestartIndividualStrategyRestartPipelinedRegionStrategy等,这些策略决定了在任务失败时应重启哪些任务。

7.‌Job Restart Strategy组件

作业重启策略

作业重启策略是Flink容错机制的另一个重要组成部分,它规定了在作业级别发生故障时应如何恢复Flink提供了多种作业重启策略,如FixedDelayRestartStrategyFailureRateRestartStrategyNoRestartStrategy等,这些策略决定了在作业失败时应如何重启作业。

Ⅱ、核心组件的工作原理

1. Checkpoint工作原理:

CheckpointFlink 实现容错机制最核心的功能。

它能够根据配置周期性地基于Stream中各个Operator 的状态来生成快照,这些状态数据会被定期持久化存储下来。当Flink程序一旦意外崩溃时,可以从这些快照进行恢复,修正因为故障带来的程序数据状态中断。在Checkpoint过程中,会在多个分布式Stream Source中插入一个Barrier标记,这些Barrier会根据Stream中的数据记录一起流向下游的各个Operator。当一个Operator接收到一个Barrier时,它会暂停处理Stream中新接收到的数据记录。当所有Stream中的Barrier都已经到达该Operator,这时所有的Barrier在时间上看来是同一个时刻点(表示已经对齐),在等待所有Barrier到达的过程中,Operator的Buffer中可能已经缓存了一些比Barrier早到达Operator的数据记录(Outgoing Records),这时该Operator会将数据记录(Outgoing Records)发射(Emit)出去,作为下游Operator的输入,最后将Barrier对应快照发射(Emit)出去作为此次Checkpoint的结果数据。

  1. 周期性触发:Checkpoint 是定期触发的,通常每隔一定数量的数据记录或一定时间间隔触发一次。这个频率可以根据需要进行配置,但一般来说,太频繁的 Checkpoint 会增加资源消耗,而太稀少的 Checkpoint 则可能无法满足容错的需求。

  2. 数据同步:在 Checkpoint 触发时,Flink 会暂停数据流的处理,并将已经处理的数据记录写入到持久化存储中。这个过程需要确保数据记录的一致性,避免出现数据丢失或重复的情况。

  3. 状态持久化:除了数据记录之外,Checkpoint 还会将各个 Operator 的状态信息也写入到持久化存储中。这些状态信息包括 Operator 的内部状态、缓冲区中的数据等。通过将状态信息持久化,Flink 可以在故障发生时,利用最新的 Checkpoint 进行恢复,保证数据的完整性和一致性。

  4. 数据校验:为了确保 Checkpoint 的正确性和完整性,Flink 还会对写入持久化存储的数据记录和状态信息进行校验。校验通常使用一些哈希算法或其他校验机制进行数据完整性的验证。

  5. 恢复机制:当 Flink 作业发生故障时,Flink 会根据配置的恢复策略,从最新的Checkpoint中读取数据记录和状态信息,并将作业恢复到 Checkpoint 时的状态。这个过程可以确保数据的完整性和一致性,避免因故障导致的数据丢失或不一致。

补充:

  • Apache Flink 中,Operator 是数据流处理的基本单元,负责处理一部分数据流。

    每个 Operator 根据其功能和需求,会对输入的数据进行相应的转换和处理。

  • Operator的作用:

    • 数据转换:将一个或多个数据流转换成新的数据流。这个过程中,Operator 会对输入的数据进行各种计算和转换,以满足后续处理的需求。

    • 数据处理:根据具体需求,Operator 可以进行各种数据处理操作,例如过滤、聚合、连接等。这些操作可以帮助用户实现更复杂的数据处理逻辑。

    • 数据分发:Operator 负责将处理后的数据发送到下游的 Operator 或存储系统。在这个过程中,Operator 会根据配置的策略,将数据发送到不同的目标,实现数据的分布式处理和存储。

2. Savepoint工作原理:

Savepoint 是用户触发的一种机制,它创建了程序全局状态的一个镜像。与Checkpoint不同,Savepoint不是为了容错而设计的,而是为了在升级作业或修改作业时能够恢复到之前的状态。通过创建一个 Savepoint,用户可以确保在升级或修改作业后能够回滚到之前的状态,而不会丢失数据或影响数据处理的正确性。当触发 Savepoint 时,Flink 会将作业的状态保存到一个指定的位置,这个状态包含了作业的所有状态信息,包括各个 Operator 的状态。用户可以使用 Savepoint 来恢复作业到之前的状态,重新处理数据流。

  1. 触发 Savepoint:用户通过触发Savepoint,通知Flink 将当前作业的状态保存到指定的位置。这个操作是手动的,需要用户显式地触发

  2. 保存状态:Flink 会将当前作业的状态信息保存到指定的存储系统中。这些状态信息包括各个 Operator 的状态、缓冲区中的数据等。

  3. 生成快照:Savepoint 触发时,Flink 会生成一个快照,这个快照包含了当前作业的状态信息。这个快照可以被视为一个一致性的状态,表示在 Savepoint 触发时的作业状态。

  4. 恢复状态:当需要从 Savepoint 恢复作业时,Flink 会从快照中读取状态信息,并将作业恢复到 Savepoint 触发时的状态。这样就可以保证在升级或修改作业后,能够回滚到之前的状态,而不会丢失数据或影响数据处理的正确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/640704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML+JavaScript-03

JavaScript函数 定义函数的格式 JavaScript 函数是通过 function 关键词定义的。 function sum(a, b){//函数体return a b;//返回值为a、b的和 }函数的调用 调用函数时直接书写函数名即可 function show(){alert("函数show被调用"); } show();函数的相互调用 …

使用Docker部署Apache Superset结合内网穿透实现远程访问本地服务

文章目录 前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网穿透,实现公网访问3. 设置固定连接公网地址 前言 Superset是一款由中国知名科技公司开源的“现代化的…

PSEUDO-LIDAR++:自动驾驶中 3D 目标检测的精确深度

论文地址:PSEUDO-LIDAR: ACCURATE DEPTH FOR 3D OBJECT DETECTION IN AUTONOMOUS DRIVING 论文代码:https://github.com/mileyan/Pseudo_Lidar_V2 摘要 3D 检测汽车和行人等物体在自动驾驶中发挥着不可或缺的作用。现有方法很大程度上依赖昂贵的激光雷…

ChatGPT Claude Bard 生成式 AI 免责声明

ChatGPT Claude Bard 生成式 AI 免责声明 ChatGPT can make mistakes. Consider checking important information.Claude.ai is in beta release and may display incorrect or harmful informationBard may display inaccurate info, including about people, so double-check…

华为数通方向HCIP-DataCom H12-831题库(判断题:81-100)

第81题 基本QinQ能根据业务种类选择外层Tag封装的方式 正确 错误 答案: 错误 解析: 基本QinQ是基于端口方式实现的,不能根据业务种类选择外层TAG封装的方式。 第82题 display interface GE0/0/0-次,发现Total Error计数(该接口物理层的错误报文总数目)不是此时可以断定当前…

【Spring Boot 3】【Redis】集成Redisson

【Spring Boot 3】【Redis】集成Redisson 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花…

CentOS7 开启防火墙及开放指定端口

CentOS7 开启防火墙及开放指定端口 查看防火墙状态systemctl status firewalld启动防火墙systemctl start firewalld停止防火墙systemctl stop firewalld查看防火墙已经开放的端口firewall-cmd --list-port添加开放指定防火墙firewall-cmd --zonepublic --add-port这里是需要开…

登录页面(附源码)

特色&#xff1a; 点击登录之后卡片翻转效果 话不多说&#xff0c;看展示。 还在等什么&#xff0c;赶快白嫖起来吧 HTML文件 <div id"window" style"display: none"><div class"page page-front"><div class"page-content&…

一些 AI 机构

文章目录 OpenAITHUDMMetaAITIIStability AINousResearch OpenAI hf : https://huggingface.co/openai 官网&#xff1a;https://openai.com THUDM 清华大学 KEG 和 THUDM 团队 Knowledge Engineering Group (KEG) & Data Mining at Tsinghua University hf : https://h…

SCCB接口

文章目录 概述引脚传输时序起始/结束信号三线模式两线模式 传输周期3阶段写传输周期2阶段写传输周期2阶段读传输周期阶段一 ID Address阶段二 子地址/读数据阶段三 写数据 SCCB与IIC区别未完待续(还有代码&#xff09;... 概述 SCCB&#xff08;Serial Camera Control Bus&…

ElementUI简介以及相关操作

ElementUI是一套基于Vue.js的桌面端组件库&#xff0c;提供了丰富的组件帮助开发人员快速构建功能强大、风格统一的页面。以下是ElementUI的简介以及相关操作&#xff1a; 简介&#xff1a;ElementUI是一套为开发者、设计师和产品经理准备的基于Vue 2.0的桌面端组件库&#xff…

aspose-cells-20.7.jar 去除水印及次数限制

1.使用 jd-gui.exe 反编译查看&#xff0c;直接搜索 License 1.修改 public static boolean isLicenseSet() {return (a ! null);}改成 public static boolean isLicenseSet() {return true;}2.修改 public void setLicense(InputStream stream) {Document document null;if (…

【EI会议征稿通知】2024年第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)

2024年第四届人工智能、自动化与高性能计算国际会议&#xff08;AIAHPC 2024&#xff09; 2024 4th International Conference on Artificial Intelligence, Automation and High Performance Computing 2024第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)将于20…

SpringMVC:拦截器

一般我们会做一些统一的操作这个时候我们需要使用springmvc提供的拦截器&#xff0c;例如token的验证&#xff0c;字段必填的操作&#xff0c;接口超时判断&#xff0c;签名验证&#xff0c;字段加密等操作&#xff0c;所以我们需要了解执行先后顺序。 我们来简单介绍下实现过程…

第6章-路由器、交换机及其操作系统介绍

目录 1. 路由器与交换机的作用与特点 1.1. 路由器 1.2. 交换机 1.3. 路由交换 2. H3C路由器与交换机介绍 3. H3C网络设备操作系统Comware 1. 路由器与交换机的作用与特点 1.1. 路由器 1、定义&#xff1a;路由器&#xff08;Router&#xff09;是连接两个或多个网络的硬…

穿越Flink的时间隧道:解锁实时数据之窗,掌握流处理之巅

目录 Flink中的时间和窗口 1时间语义 1.1Flink中的时间语义 1.1.1处理时间 1.1.2事件时间 1.2那种时间语义更重要 2 水位线 2.1 事件时间和窗口 2.2 什么是水位线 2.3 如何生成水位线 2.3.1使用WatermarkGenerator 2.3.2使用SourceFunction 2.4 水位线的传递 2.5 水位…

bvh转fbx python实战代码

目录 参数含义: bvh转fbx python实战代码 参数含义: 参考: Export Scene Operators — Blender Python API filepath (string, (optional, never None)) – File Path, Filepath used for exporting the file check_existing (boolean

R语言中数据框是什么?

在数据分析过程中离不开表格&#xff0c;通常使用Excel来做数据分析&#xff0c;行和列用来存放不同的数据&#xff0c;表格能清晰直观的展示数据&#xff0c;而且可以将多张表组合联系起来&#xff0c;这种不约而同的规范也同样适用于R语言。 R语言中的数据框&#xff08;Data…

2023年度环境电器行业数据分析(洗地机、扫地机器人、吸尘器等)

在家电行业整体消费不振的环境下&#xff0c;环境电器市场也受到影响&#xff0c;2023年度市场大盘销售呈下滑趋势。根据鲸参谋平台的数据显示&#xff0c;2023年京东平台环境电器市场的销量累计约7100万&#xff0c;同比下滑约12%&#xff1b;销售额约360亿&#xff0c;同比下…

移动端自适应解决方法(原理是rem布局)

adaptive 点击跳转官方Git地址 此博客参考笔记 也可以直接复制下方的js文件直接使用 index.js var adaptive {}; (function (win, lib) {var doc win.document;var docEl doc.documentElement;// 设备像素比var devicePixelRatio win.devicePixelRatio;// 我们设置的布…