Flink反压如何查看和优化

我们在使用Flink程序进行流式数据处理时,由于种种原因难免会遇到性能问题,如我们在使用Flink程序消费kafka数据,可能会遇到kafka数据有堆积的情况,并且随着时间的推移,数据堆积越来越多,这就表名消费处理数据的速度没有跟上生产的速度。面对这种情况,我们如何知道到底哪个环节造成性能瓶颈问题,这就需要我们对flink作业链路进行分析排查,找出存在瓶颈的算子。好在flink为我们提供了任务监控的Web UI,我们可以可以通过监控的算子反压情况找出性能瓶颈的算子。
Flink 1.5 之前是基于 TCP 流控 + bounded buffer 实现反压。
Flink 1.5 之后实现了自己托管的 credit -- based 流控机制,在应用层模拟 TCP 的流控机制。

反压如果不能得到正确的处理,可能会影响到 checkpoint 时长和 state 大小,甚至可能会导致资源耗尽甚至系统崩溃。

Flink的反压机制

Flink的反压(BackPressure)机制是通过周期性对taskManager线程的栈信息采样,计算被阻塞在请求输出Buffer的线程比率来确定,默认情况下,比率在0.1以下为OK,0.1到0.5为LOW,超过0.5则为HIGH。算子链如果存在反压,则意味着某个算子存在瓶颈,即其处理速率跟不上上游发送数据的速率,从而需要对上游进行限速,影响任务整体处理性能。所以,我们需要找出存在性能瓶颈的算子节点,优化对应的算子,才能解决整体的性能问题。算子是否存在反压,可以通过Flink任务提供的Web UI的反压状态表现出来,根据算子链的反压状态,找出存在性能瓶颈的算子,从而有针对性的进行优化。比如,我们的流作业在存在性能问题的情况下,会导致数据源消费速率跟不上生产速率,从而引起Kafka消费组的积压。在这种情况下,可以通过算子的反压和时延,确定算子的性能瓶颈点。

反压场景进行分析及应对处理

下面对flink任务常见的反压场景进行分析及应对处理:

  • kafka数据有堆积,但所有算子反压都正常(蓝色)

该场景说明性能瓶颈点在Source,主要是受数据读取速度影响,此时可以通过增加Kafka分区数并增加source并发解决。

  • 作业首个或非倒数第二个算子反压很高(红色)

该场景说明性能瓶颈点在Vertex2算子,可以通过查看该算子描述,确认该算子具体功能,以进行下一步优化。

  • 作业最后一个算子反压正常(蓝色),但前面的算子都高反压(红色)

该场景说明性能瓶颈点在sink算子(Vertex3),可以通过调整sink.parallelism来优化.但还需要根据对应的具体数据源具体优化,比如对于JDBC数据源,可以通过调整写出批次及刷写时间(sink.buffer-flush.max-rows 、sink.buffer-flush.interval)等。

  • 反压算子下游有多个算子

如下,作业一个算子反压高(红色),而后后续多个并行算子反压正常(蓝色)

该场景说明性能瓶颈在Vertex2或者Vertex3,为了进一步确定具体瓶颈点算子,可以在FlinkUI页面开启inPoolUsage监控。如果某个算子并发对应的inPoolUsage长时间为100%,则该算子大概率为性能瓶颈点,需分析该算子以进行下一步优化。

inPoolUsage 监控

总结

依次算子链从前往后找到最后一个反压算子节点,则瓶颈一般为该节点的下游节点,如果其下游有多个节点,则通过查看其所有下游节点的Metrics监控的buffers.inPoolUsage,如果某节点的buffers.inPoolUsage长期为1,则该节点即为瓶颈节点。

相关推荐
碳基学AI1 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义免费下载方法
大数据·人工智能·python·gpt·算法·语言模型·集成学习
一个天蝎座 白勺 程序猿2 小时前
大数据(4.6)Hive执行引擎选型终极指南:MapReduce/Tez/Spark性能实测×万亿级数据资源配置公式
大数据·hive·mapreduce
HelpHelp同学3 小时前
信息混乱难查找?三步搭建高效帮助中心解决难题
大数据·人工智能·知识库管理系统
TDengine (老段)8 小时前
TDengine 中的关联查询
大数据·javascript·网络·物联网·时序数据库·tdengine·iotdb
直裾13 小时前
Mapreduce的使用
大数据·数据库·mapreduce
麻芝汤圆15 小时前
使用 MapReduce 进行高效数据清洗:从理论到实践
大数据·linux·服务器·网络·数据库·windows·mapreduce
树莓集团15 小时前
树莓集团海南落子:自贸港布局的底层逻辑
大数据
不剪发的Tony老师16 小时前
Hue:一个大数据查询工具
大数据
靠近彗星16 小时前
如何检查 HBase Master 是否已完成初始化?| 详细排查指南
大数据·数据库·分布式·hbase
墨染丶eye16 小时前
数据仓库项目启动与管理
大数据·数据仓库·spark