Flink详解系列之九--反压机制和处理

Flink 反压 Flink反压是一个在实时计算应用中常见的问题,特别是在流式计算场景中。 阅读详情

反压是什么

反压是在实时数据处理中,数据管道某个节点上游产生数据的速度大于该节点处理数据速度的一种现象。反压会从该节点向上游传递,一直到数据源,并降低数据源的摄入速度。这在流数据处理中非常常见,很多场景可以导致反压的出现,比如, GC导致短时间数据积压,数据的波动带来的一段时间内需处理的数据量大增,甚至是checkpoint本身都可能造成反压。

反压的原理

上面是一个Flink任务的流程图,我们将反压过程拆分成两个部分:跨TaskManager的反压过程和TaskManager内的反压过程,最后再介绍一下基于Credit的反压过程。

跨TaskManager的反压过程

跨TaskManager的反压是怎么向上游传播的呢?在这之前我们先了解一下Flink中TaskManager 之间数据的网络传输过程。

从上图可知,TaskManager A给TaskManager B发送数据,TaskManager A做为Producer,TaskManager B做为Consumer。Producer处理完的数据首先输出到Producer对应的NetWork Buffer中,NetWorkBuffer就是图中的ResultSubPartition和InputChannel。

ResultSubPartition和InputChannel都向LocalBufferPool申请Buffer空间,然后LocalBufferPool再向NetWork BufferPool申请内存空间。这里,NetWork BufferPoo

Flink优化03---反压处理 一、概述 1.1 反压的理解 简单来说,数据在 flink 拓扑中多个节点自上而下流动,下游处理数据较慢,导致上游数据发送阻塞,最终导致数据源的获取也被阻塞。也就是说,下游处理数据的速度跟不上数据流入的速度,会导致数据流入阻塞,并反馈到上游,使上游数据的发送也产生阻塞。 通常情况下,大促销、秒杀活动导致流量激增,会导致反压的产生。 1.2 反压的危害 反压的出现,会影响到 checkpoint 时长和 state 大小,进而可能导致资源耗尽甚至系统奔溃。 1)影响 checkpoint 时长 阅读详情

相关推荐

Flink如何处理反压问题

流处理系统需要能优雅地处理反压(backpressure)问题。反压通常产生于这样的场景:短时负载高峰导致系统接收数据的速率远高于它处理数据的速率。许多日常问题都会导致反压,例如,垃圾回收停顿可能会导致流入的数据快速堆积,或者遇到大促或秒杀活动导致流量陡增。反压如果不能得到正确的处理,可能会导致资源耗尽甚至系统崩溃。 目前主流的流处理系统 Storm/JStorm/Spark Streaming/Flink 都已经提供了反压机制,不过其实现各不相同。 Storm 是通过监控 Bolt 中的接收队列负载情

一个记录普通男孩在IT界学习思考感悟的地方 3025

flink反压_什么是flink反压

过了一段时间后由于上游的发送速率要大于下游的接受速率,下游的 TaskManager 的 Buffer 已经到达了申请上限,这时候下游就会向上游返回 Credit = 0,ResultSubPartition 接收到之后就不会向 Netty 去传输数据,上游 TaskManager 的 Buffer 也很快耗尽,达到反压的效果,这样在 ResultSubPartition 层就能感知到反压,不用通过 Socket 和 Netty 一层层地向上反馈,降低了反压生效的延迟。是否有了动态反压,静态限速就没用了?

2401_89758130的博客 1141

Flink 优化-反压处理

简单来说,Flink 拓扑中每个节点(Task)间的数据都以阻塞队列的方式传输,下游来不及消费导致队列被占满后,上游的生产也会被阻塞,最终导致数据源的摄入被阻塞。反压通常产生于这样的场景:短时间的负载高峰导致系统接收数据的速率远高于它处理数据的速率。许多日常问腿都会导致反压,例如,垃圾回收停顿可能会导致流入的数据快速堆积;遇到大促、秒杀活动导致流量陡增。

好记性不如烂笔头 805

Flink进阶(五):Flink中的反压问题

有段时间没写flink系列文章了,今天写一写Flink中的反压问题。 何为反压? 在短时间内的负载高峰导致系统接收的数据远大于它能处理数据的速率,如果反压问题不能解决,就会导致系统资源耗尽甚至系统崩溃。那么Flink自身是有反压机制的,它能够自己检测到哪些Operator被阻塞了,然后自适应地降低源头或上游数据的发送速率,从而维持整个系统的稳定。 1.5之前Flink的反压机制 将反压机制之前,先...

weixin_42155491的博客 2883

Flink流量控制与反压机制完全总结

前言 笔者最近回顾自己对Flink技术栈细节的理解,发现对Flink的网络栈、流控与反压这一套机制存在比较大的盲区。虽然平时多次处理过作业反压的问题,但是不完全理解背后的实现显然说不过去。于是专门写一篇总结,站在大佬们的肩膀上彻底搞清楚Flink是怎么做流控与处理反压的。 Flink网络传输的数据流向 Flink网络传输的数据流向如下图所示。 Sender在发送数据时,首先写入Tas...

LittleMagic's Blog 2191

Flink实战(19):flink反压_什么是flink反压(2)

过了一段时间后由于上游的发送速率要大于下游的接受速率,下游的 TaskManager 的 Buffer 已经到达了申请上限,这时候下游就会向上游返回 Credit = 0,ResultSubPartition 接收到之后就不会向 Netty 去传输数据,上游 TaskManager 的 Buffer 也很快耗尽,达到反压的效果,这样在 ResultSubPartition 层就能感知到反压,不用通过 Socket 和 Netty 一层层地向上反馈,降低了反压生效的延迟。是否有了动态反压,静态限速就没用了?

2401_84170337的博客 743

Flink反压问题解析

反压(Backpressure)是流处理系统中的一种流量控制机制。当下游算子处理速度低于上游数据生产速度时,系统会向上游传递压力信号,迫使上游降低数据发送速率,避免数据堆积和系统崩溃。Flink 通过动态反压机制实现这一过程,但其副作用是可能导致作业延迟增加、吞吐量下降甚至任务失败。反压是流处理系统的自然现象,但长期未解决的反压会导致作业性能恶化。定位瓶颈:优先通过 Web UI 和 Metrics 确定反压源头。数据均衡:避免 KeyBy 热点,合理设置并行度。外部系统优化。

Debugtheworld的博客 1520

【Flink】反压机制原理

在说flink的反压之前,先来说下strom和spark streaming的反压。 Strom 反压 如图是strom的反压,是通过zookeeper来决定的,当strom感受到处理不过来的时候,就会像zookeeper增加一个znode,然后strom发现了这个znode,对应的上游数据就会阻塞,不会发送数据。 Spark Streaming 反压 Spark Streaming的反压是从1.5版本以后引入的。在这之前,基本就是通过控制最大接受速率来控制的。譬如,如果是基于Receiv.

一杯咖啡半杯糖的博客 3951

flink反压

flink反压过程介绍

chanyue123的博客 3937

Vienna整流器双PI闭环仿真:从SVPWM调制到中点电位平衡的实践解析

本文深入解析Vienna整流器双PI闭环仿真技术,涵盖SVPWM调制和中点电位平衡的实践细节。通过详细的MATLAB/Simulink仿真搭建流程和常见问题排查方法,帮助工程师掌握高效整流器控制策略,提升系统稳定性和动态响应性能。

weixin_29168153的博客 326

Windows10下MATLAB2017a安装与破解实战:手把手教你搞定双镜像加载

本文详细介绍了在Windows 10系统下安装和破解MATLAB 2017a的完整步骤,包括双镜像加载、许可证配置及常见问题解决方案。通过手把手教程,帮助用户顺利完成安装并优化性能,特别适合工程计算领域的初学者和专业人士。

weixin_29053383的博客 419

科研级YOLOv8 Neck革新:BiFPN双向特征金字塔赋能,让多尺度融合更高效的实战指南

在文件夹下新建BiFPN.py,将上述BiFPNLayer和BiFPN类的代码写入其中。这一步是为了让YOLOv8的代码架构能识别我们的自定义Neck模块。

m0_64661770的博客 153

BLDC&PMSM电机控制器硬件设计工程(一)概述&需求&规划

这里是一个专注于电机控制器硬件工程的开放社区与知识仓库。我们的核心使命是分享、交流与共创,致力于解开无刷直流电机(BLDC)和永磁同步电机(PMSM)中、大功率控制器硬件设计,包括驱动IC选型,电流传感器选型,控制IC,母线电容计算,功率模块(IGBT、MOS管)选型以及大功率功率模块驱动电源设计。功率等级: 重点关注中等功率(如500W-10kW) 并向大功率(10kW以上) 延伸,探讨对应的功率器件(如MOSFET, IGBT, SiC)选型与驱动。

小幽余生不加糖 636

Claude Code Auto Memory 的 Storage Location,SAP ABAP 项目里的本地记忆仓库应该怎么理解

本文介绍了 SAP ABAP 项目中 Claude Code 的 auto memory 机制,重点探讨了其存储位置的设计原理。auto memory 不是存储在项目目录中,而是默认位于 ~/.claude/projects/<project>/memory/,其中 <project> 基于 Git 仓库路径推导,确保同一仓库下的所有工作目录和分支共享记忆。记忆目录包含入口文件 MEMORY.md(仅加载前 200 行)和详细主题文件,这种分层设计类似 CDS View 架构思想。文章还分析了按 Git 仓

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 100

7 中望CAD二次开发-标注(一)(ZRX C++)

尺寸标注是CAD设计中最常用的功能之一,软件内置了很多标注功能,可以通过使用这些标注工具,对需要标注的长度、角度等一个个进行标注。但这显然效率很低,学习CAD二次开发,就是要把人从重复的劳动中解放出来,实现批量标注。本文介绍,如何通过二次开发进行标注。

cilvsuanna的博客 338

分布式训练中All-Reduce、All-Gather、Reduce-Scatter原理

Reduce-Scatter = 先对所有进程的数据做 Reduce(如 sum / mean),再把结果“切分”分发给各进程。(是 Reduce + Scatter 的融合操作。

comli_cn的博客 340

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: rocketMq和kafka对比
下一篇: Flink详解系列之八--Checkpoint和Savepoint
wrr-cat
博客等级 码龄9年 128粉丝 302原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值