【实时计算 Flink】检查点和快照超时的诊断方法与调优策略

news2024/10/9 10:02:03

Flink的状态管理是一个复杂而关键的领域,涉及到作业的性能、稳定性和资源利用等多个方面。通过对状态生成机制和优化策略地深入理解与正确应用,结合实时计算Flink版提供的产品能力,可以帮您有效地优化Flink作业以应对大规模状态作业带来的挑战,实现更高效、更可靠的实时数据处理。

Flink状态(State)介绍

Apache Flink是一个开源的流处理框架,用于处理和分析实时数据流。在Flink中,状态管理是流处理应用的核心概念之一,它允许算子在处理事件时保持操作状态信息。状态可以被视为算子的记忆,它使得算子能够在处理无界流数据时保持对历史数据的跟踪。状态可以是简单的键值对,也可以是更复杂的数据结构,如列表、集合或自定义对象。状态的更新和查询对于实现复杂的流处理逻辑至关重要。

状态管理与维护是阿里云实时计算Flink版中的重要功能,通过产品的控制台可以完成系统检查点生命周期的自动管理,并在保证不影响作业可用性的前提下最小化存储空间,同时产品的控制台支持快照的管理和共享,为不同场景下的快照提供了选择,而作业间的快照共享功能对大状态作业的A/B Test和主备链路切换具有极为实用的价值。

大状态作业导致的问题

在处理大规模状态作业的过程中,系统面临着调优的严峻挑战。随着作业状态的持续膨胀,多个问题逐步显现,对作业的整体性能产生不利影响:

  • 性能下降与作业反压

    随着有状态算子状态的累积,IO资源瓶颈问题日益凸显,引发作业反压。这不仅增加了处理延迟,还导致吞吐量(TPS)降低。

  • 资源利用效率低下

    有状态算子的CPU资源常出现大量闲置,且随着状态规模的增长,资源浪费问题更加严重。

  • 检查点与快照机制的时效性问题

    状态规模的扩大使得检查点和快照过程更易超时,这不仅增加了作业重启后追赶数据的时间成本,也对端到端的Exactly-once语义的实现带来了额外延迟。

  • 启动与扩缩容过程缓慢

    在作业启动和扩缩容过程中,每个算子节点需从全量数据中恢复并重建本地数据库,这一过程的时间消耗与状态规模成正比。拥有大状态作业的状态加载往往成为启动和扩缩容执行速度的瓶颈,进而延长业务中断时间。

大状态作业诊断调优整体思路

Flink处理数据时的性能减缓、检查点或快照超时问题以及作业启动和扩缩容过程缓慢问题,通常是由大规模状态的管理和维护不当所引起的,您可以遵循以下步骤来优化大状态作业。

  1. 识别作业瓶颈

    通过诊断工具结合具体业务产出情况,对作业目前的运行情况进行更为深入的了解,进而确定作业的性能瓶颈是否与状态管理有关,诊断工具使用请参见查看作业性能。

  2. 采用更新的引擎版本

    Flink持续优化状态模块,最新版本的引擎通常具有更高的性能。实时计算Flink版的企业级引擎VVR与Apache Flink完全兼容,并内置了专为流计算优化的状态后端存储GeminiStateBackend。GeminiStateBackend针对状态访问进行了设计,有效提升了性能、检查点和作业恢复能力,且参数自适应,无需手动配置。结合实时计算Flink版产品控制台,VVR为您提供了企业级的优化体验,确保性能达到最佳。在进行性能调优前,请确保已采用最新版引擎和相关配置,详情请参见企业级状态后端存储介绍、企业级状态后端存储配置和作业引擎版本升级。

  3. 针对不同问题采取特定调优策略

    • 运行时性能下降(作业反压)

      在这种情况下,调优应遵循以下顺序:首先优化SQL层,其次基于TTL(生存时间)减少状态数据,然后调整内存和并发资源以降低磁盘读取频率,详情请参见SQL作业大状态导致反压的调优原理与方法和DataStream作业大状态导致反压的调优原理与方法。

    • 检查点或快照超时

      在处理此类问题时,应先优化作业的运行时性能以减轻反压,接着优化同步阶段的性能,然后调整并发资源以降低单个并发任务的状态量,最后考虑使用原生快照功能来提高效率,详情请参见检查点和快照超时的诊断方法与调优策略。

    • 作业启动和扩缩容缓慢

      如果本地磁盘资源充足,可以优先考虑启用状态本地恢复(Local Recovery)功能。同时,利用GeminiStateBackend的懒加载特性和延迟剪裁技术,可以有效提升作业的启动和扩缩容速度,详情请参见作业启动和扩缩容速度优化。

本文为您介绍检查点和快照超时的诊断方法和调优策略。

运行原理

Flink的状态管理核心机制依赖于Chandy-Lamport算法,以确保数据的一致性和可靠性。在此框架下,检查点和快照的执行过程可以概括为两个主要阶段:

  1. 同步阶段:此阶段的关键在于Barrier的对齐和同步资源的维护。Barrier作为一种特殊的数据记录,在算子之间传递时,其对齐的时间与数据记录的延迟成正相关关系。

  2. 异步阶段:在此阶段算子会将本地状态数据上传至远程的持久化存储系统,上传时间的长短与状态数据的大小成正比。

说明

当Flink作业面临反压问题时,同步阶段的执行可能会变得缓慢,从而导致检查点和快照超时。因此,在遇到检查点和快照超时问题,并且监测到作业存在反压时,应首先参考SQL作业大状态导致反压的调优原理与方法和DataStream作业大状态导致反压的调优原理与方法优先解决反压问题,以提高作业的整体效率和稳定性。

问题诊断方法

在反压问题解决后,如果检查点与快照仍出现超时现象,则首先应分析同步阶段的对齐时间是否过长,随后考虑是否由庞大的状态数据引起。

Checkpoint UI

运维中心 > 作业运维页面作业日志页签下的Checkpoints > Checkpoints 历史中,观察不同级别(作业、算子、单并发)的Checkpoint指标,分析检查点和快照超时原因。

检查点和快照超时的诊断方法.jpg

您可以着重观察超时的Checkpoint的异常算子或正在进行的Checkpoint的算子,定位思路如下:

  • 其Sync Duration和Alignment Duration是否较长:如是,则可基本判定其瓶颈在同步阶段上,需要优先解决同步阶段问题。

  • 其Async Duration是否较长,以及其Checkpointed Data Size是否较大:如是,则可基本判定其瓶颈在异步阶段状态上传上。

Checkpoint指标

运维中心 > 作业运维页面监控告警页签查看lastCheckpointDuration和lastCheckpointSize指标,来粗粒度分析历史Checkpoint的耗时和大小。

调优策略

在进行性能调优之前,首先要确保运行时性能达到预期。如果当前性能水平不足,应优先根据运行时性能优化指南进行调整。在满足基本性能要求后,为了进一步提高检查点和快照的效率,可以考虑以下策略。

策略

策略说明

使用场景

配置方法

注意事项

使用Unaligned Checkpoint和Buffer Debloating

可以有效解决因等待数据对齐而导致的超时问题,适用于各种规模的作业。

检查点或快照同步超时

运行参数中配置,详情请参见Unaligned checkpoints和Buffer debloating使用方式。

请参见Limitations。

增加运行时的并发资源

通过增加并发资源,可以减少单个并发任务的状态量,从而加速异步快照的处理流程。

检查点或快照异步超时

在资源配置或细粒度资源配置中增加并发,详情请参见配置作业资源。

无。

使用原生快照

相比标准快照,原生快照生成速度更快,存储占用更小。

快照异步超时

对运行中的作业,创建原生格式的作业快照,详情请参见手动创建作业快照。

原生快照无法保证跨大版本兼容。

作业启动和扩缩容速度优化

在进行作业恢复时,从检查点或快照中恢复相较于无状态启动,关键在于高效地从远程持久存储中下载状态文件并重建状态引擎。这一步骤需要执行大量的输入输出操作,容易成为恢复过程中的效率瓶颈,可能会造成作业的长时间停滞。本文为您介绍作业启动和扩缩容过程中瓶颈问题的诊断方法和调优策略,助力您高效提升系统性能。

诊断步骤

在作业启动或进行扩容操作期间,如果发现作业长时间停留在初始化阶段,应首先诊断是否存在初始化瓶颈。以下是推荐的诊断步骤:

  1. 使用诊断工具分析算子状态:利用Thread Dump、线程动态分析和火焰图等工具,检查初始化阶段的算子线程栈。重点关注线程栈是否长时间处于等待状态,尤其是在Gemini等状态存储系统上的操作。诊断工具使用方式请参见分析工具使用方式。

  2. 识别状态算子的初始化问题:如果发现某个算子长时间处于初始化状态,且该算子涉及状态处理,那么可以推断问题可能出在状态的下载或重建过程中。

调优策略

为了提升作业启动和扩容效率,一旦确定大状态处理是作业初始化的瓶颈,您可以参考如下方案进行针对性调整。

策略

策略说明

配置方法

注意事项

动态扩缩容

可以实现更快的让参数配置生效,减少作业启停对业务的中断时间,方便进行TM动态扩缩容。

详情请参见动态扩缩容与参数动态更新。

动态更新为实验性功能,在动态更新参数时,业务并不是完全不中断。相比传统的参数修改模式,动态更新能够显著缩短中断时间,但中断的具体时长受到作业拓扑和状态大小等因素的影响,通常在5秒至1分钟之间。

Local Recovery:本地备份快照加速恢复

在本地同时存储快照,可减少恢复过程中的数据下载需求。当本地磁盘空间充裕时,为首选方案。

在运行参数中配置

state.backend.local-recovery: true

,配置方法请参见如何配置作业运行参数?

  • 实验性功能,VVR 8.0.8及以上版本推荐开启。

  • 适用于作业Failover或者动态参数更新的场景,手动停止重启无法生效。

  • 会多占用部分本地磁盘资源。

GeminiStateBackend智能懒加载和延迟剪裁:异步状态恢复方案

作为平台核心技术GeminiStateBackend,即使面对大规模状态的作业,也能仅通过下载必要的元数据快速启动,实现对数据的即时处理。随后,系统将通过异步下载和智能裁剪技术,有效处理远程检查点文件,显著降低作业中断时间,提升效率超过90%,详情请参见企业级状态后端存储介绍。

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

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

相关文章

PigGo的安装配置

TyporaPigGo的使用 1、下载PigGo 1.1、先打开Typora的偏好设置 1.2 下载PigGo app 1.3 下载Setup-xxx.exe版本 1.4安装成功后打开PigGo 2、配置PigGo 1、安装gitee-uploader插件 2、 PicGo设置 ​ ​ 3、图床设置 3.1配置SM.MS 3.1.1 登录sm,生成秘钥 如果没有注册&…

期权懂|期权交易涨跌幅限制会随时调整吗?

本期让我懂 你就懂的期权懂带大家来了解,期权交易涨跌幅限制会随时调整吗?有兴趣的朋友可以看一下。期权小懂每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 期权交易涨跌幅限制会随时调整吗? 涨跌幅…

天玑 9400 基本确认:4大升级,一代“冰龙”来了

去年,天玑9300 破釜沉舟,打破了A系不可击败的神话。但今年,对安卓阵营来说,才是扬眉吐气的时刻。 因为芯片人才的流失,果子已经雄风不再。即使是 4nm 工艺打3nm工艺,天玑 9300 的 GPU效能,也压…

机器学习笔记-1

文章目录 前言一、How to find a function二、Define Loss from Training Data三、Optimization总结 前言 机器学习(Machine Learning, ML)是一门让计算机通过数据来自动学习和改进的技术。它的核心理念是通过分析大量的历史数据来找到其中的规律&#…

YOLOv10改进策略【注意力机制篇】| CVPR2024 CAA上下文锚点注意力机制

一、本文介绍 本文记录的是基于CAA注意力模块的YOLOv10目标检测改进方法研究。在远程遥感图像或其他大尺度变化的图像中目标检测任务中,为准确提取其长距离上下文信息,需要解决大目标尺度变化和多样上下文信息时的不足的问题。CAA能够有效捕捉长距离依赖…

Spark算子使用-Map,FlatMap,Filter,diatinct,groupBy,sortBy

目录 Map算子使用 FlatMap算子使用 Filter算子使用-数据过滤 Distinct算子使用-数据去重 groupBy算子使用-数据分组 sortBy算子使用-数据排序 Map算子使用 # map算子主要使用长场景,一个转化rdd中每个元素的数据类型,拼接rdd中的元素数据&#xf…

NUKE 15有哪些新的改进功能?影视后期特效合成NUKE 15 安装包分享 【Mac/win】

Nuke 15是一款由英国The Foundry公司开发的专业的合成软件,被广泛用于电影、电视和广告制作中的后期合成和特效制作。 Nuke 15拥有强大的功能和灵活性,可以帮助用户处理各种复杂的合成任务,包括图像修复、色彩校正以及粒子特效等。它具备高效…

sql注入第8关

手工注入麻烦 目录 判断闭合方式 判断注入类型 手工注入 1、获取数据库名 2、爆破数据库的名字(security) 3、爆破表的数量 4、判断表名的长度 5、判断表的列名数量 6、判断表的列名的名字 7、获取表的数据 8、判断数据的长度 9、判断数据的…

在 Hugging Face MTEB 排行榜上比较 ELSER 的检索相关性

作者:来自 Elastic Aris Papadopoulos 及 Serena Chou 本博客对 ELSER 在 Hugging Face MTEB 排行榜上的检索相关性进行了比较。 在 Hugging Face MTEB 排行榜上比较 ELSER 的检索相关性 ELSER(Elastic Learned Sparse EncodeR)是 Elastic …

WMS 智慧仓储管理系统的可视化管理_SunWMS

【大家好,我是唐Sun,唐Sun的唐,唐Sun的Sun。一站式数智工厂解决方案服务商】 WMS 智慧仓储管理系统的可视化管理主要表现在以下几个方面: 首先是库存可视化。通过系统,仓库管理人员能够以直观的图表、图形等形式清晰地…

pdf怎么加密码怎么设置密码?这几种pdf设置密码的方法简单!

pdf怎么加密码怎么设置密码?PDF格式作为现代办公和学习中频繁使用的文档类型,其身影遍布于各类场景,然而,在享受PDF带来的便利之余,不少用户对其安全性产生了疑虑,尽管PDF文件相较于其他格式更难被直接编辑…

如何查看是否是ip转发?

一、什么是ip转发 ip转发指的是路由器或者其他网络设备把接受的ip数据包从一个接口转发到另一个ip的过程。在ip转发的过程中,如果某个设备接收到某个数据包时发现该设备不是此数据包的最终目的地,它就会根据路由表中的信息将此数据包转发到下一个适合的…

10.8摩尔学习知识点

今天学习获取数据 在摩尔云平台找到要修改的主视图,然后点击操作功能,点击新增,直接输入名字获取数据,然后,显示顺序15,显示是,点击确定,然后就是自定义类上面输入创建的类名&#…

006集—— CAD锁文档的用法(CAD—C#二次开发入门)

CAD 二开中,当要在除当前文档外的其它文档的模型空间或图纸空间中添加图元时,需要先锁定其文档。用户可用要锁定的Document对象的LockDocument方法进行锁定。在调用LockDocument方法后,将返回一个DocumentLock对象。 本例创建一个新的文档然…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《面向电动汽车用户的电价套餐模块化设计 》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

数学建模算法与应用 第1章 线性规划

第1章 线性规划 线性规划是数学规划领域的重要分支,广泛应用于资源配置、生产计划、物流管理等领域。它主要用于解决如何在满足一定约束条件下,使目标函数(如成本、利润等)达到最大或最小的问题。第一章将介绍线性规划的基本概念…

点可云ERP进销存V8版本——其他支出单使用说明

其他支出单用于记录除采购内容外其支出资金,如:人工运输费、安装维修服务、差旅报销等。新增保存之后,对应资金账户将减少金额额度,并做存储记录,可在现金银行报表中体现。 新增操作 接下来我们讲解新增单据步骤。如上…

【CSS】flex配合margin实现元素均匀分布

现有代码如下&#xff0c;要求不使用网格布局&#xff0c;根据剩余空间设置margin <div className"container">{Array.from({ length: 12 }, (_, i) > i).map((item) > (<div className"box">{item}</div>))} </div>.conta…

《CUDA编程》6.CUDA的内存组织

前面几章讲了一些编写高性能CUDA程序的要点&#xff0c;但还有很多其他需要注意的&#xff0c;其中最重要的就是合理的使用设备内存 1 CUDA的内存组织简介 现代计算机中的内存存在一种组织结构(hierachy)&#xff0c;即不同类型的内存具有不同的容量和访问延迟&#xff08;可以…

从新开始,轻松搭建陪玩系统!线下线上陪玩平台搭建系统,选购线下线上陪玩小程序APP系统时,这点不能忽视!

在搭建线下线上陪玩平台系统&#xff0c;以及选购线下线上陪玩小程序APP系统时&#xff0c;以下几点是至关重要的&#xff0c;不容忽视&#xff1a; 一、明确需求与规划 目标用户定位&#xff1a; 确定陪玩系统的目标用户群体&#xff0c;如游戏玩家、技能服务需求者等。 功能…