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,则该节点即为瓶颈节点。

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

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

相关文章

mysql在where中判断订单支付时间大于几号时,加上一个条件,否则不加条件

可以使用MySQL的DATE函数来提取订单支付时间中的日期,然后在WHERE子句中进行比较。以下是示例代码: SELECT * FROM orders WHERE IF(DATE(payment_time) > 2021-07-01, order_status paid, TRUE)上述代码中,IF函数用于在支付时间大于202…

工作中遇到的英文问题(遇到就更新)

12.13 1.基数怎么写 odd 2.偶数怎么写 even 3.基准怎么写 benchmark "bench" 是一个英语词汇,可以指长凳、工作台或实验台的意思,具体取决于上下文。 4.比例怎么写 ratio 5.是不是2的n次方 isPowerOfTwo 6.得到2的n次方 n这个数 即求…

.NET中的并行集合

作为.NET 4并行扩展的一部分,新的System.Collections.Concurrent命名空间中包含一些新的集合。它们被设计为在含有较少锁的多线程并发操作时是安全的。该命名空间下还包含三个用于对并发操作的集合进行分区的类,但在此我们不讨论它们。 1. IProducerCon…

机器学习---Boosting

1. Boosting算法 Boosting思想源于三个臭皮匠,胜过诸葛亮。找到许多粗略的经验法则比找到一个单一的、高度预 测的规则要容易得多,也更有效。 预测明天是晴是雨?传统观念:依赖于专家系统(A perfect Expert) 以“人无…

【flink番外篇】3、flink的source(内置、mysql、kafka、redis、clickhouse)介绍及示例(5)- clickhouse

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的…

软考 系统架构设计师系列知识点之大数据(2)

接前一篇文章:软考 系统架构设计师系列知识点之大数据(1) 所属章节: 第11章. 未来信息综合技术 第6节. 云计算和大数据技术概述 大数据和云计算已成为IT领域的两种主流技术。“数据是重要资产”这一概念已成为大家的共识&#xf…

云基础软件深化合作,云轴科技ZStack与麒麟软件战略签约

12月8日,云轴科技ZStack与麒麟软件战略合作签约仪式在北京举行,双方对过往紧密合作表达了充分肯定,并就进一步联合技术创新、打造重点行业标杆和持续赋能客户达成高度共识。云轴科技创始人&CEO张鑫和麒麟软件高级副总经理谢文征共同见证双…

Oracle(2-17) RMAN Maintenance

文章目录 一、基础知识1、Retention Policy 保留政策2、Recovery Window - Part 1 恢复窗口-第1部分3、Cross Checking 交叉检查4、The CROSSCHECK Command CROSSCHECK命令5、OBSOLETE VS EXPIRED 过时与过期6、Deleting Backups and Copies 删除备份和副本7、The DELETE Comma…

无参RCE [GXYCTF2019]禁止套娃1

打开题目 毫无思绪,先用御剑扫描一下 只能扫出index.php 我们尝试能不能用php伪协议读取flag php://filter/readconvert.base64-encode/resourceindex.php php://filter/readconvert.base64-encode/resourceflag.php 但是页面都回显了429 怀疑是不是源码泄露 用…

【Linux学习】深入理解动态库与静态库

目录 十三.动态库与静态库 13.1 认识动静态库 13.2 深入理解动静态库 什么是库? 编译链接过程 动静态库的基本原理 13.3 静态库 静态库的打包: 静态库的使用: 13.4 动态库 动态库的打包: 动态库的使用: 13.5 动态库与静态库怎么选? 十三.动态库与静态库 13.1 认识动静态库 …

【毕业设计】基于STM32的解魔方机器人

1、方案设计 1.采用舵机作为魔方机器人的驱动电机,从舵机的驱动原理可知:舵机运行的速度和控制器的主频没有关系,所以采用单片机和采用更高主频的嵌入式处理器相比在控制效果上没有什么差别。单片机编程过程简单,非常容易上手&am…

uniapp使用u-empty以及其相关属性

Uni-app 是一款基于 Vue.js 的跨平台开发框架,可以用于同时开发多个平台的应用程序。其中,u-empty 是 Uni-app 提供的一个组件,用于展示空状态的页面。 u-empty 组件有以下几个相关属性: image:设置空状态显示的图片。…

orb-slam2学习总结

目录 视觉SLAM 1、地图初始化 2、ORB_SLAM地图初始化流程 3、ORB特征提取及匹配 1、对极几何 2、对极约束 (epipolar constraint) 3、基础矩阵F、本质矩阵E 5、单目尺度不确定性 6、单应矩阵(Homography Matrix) 6.1 什么是单应矩…

Python入门第5篇(爬虫相关)

目录 爬虫初步说明 html相关基础 urllib之读取网页内容 http相关基础 requests之webapi调用 爬虫初步说明 爬虫,一句话来说,即模拟浏览器爬取一些内容,如自动下载音乐、电影、图片这种的 具体可能是直接访问网页进行解析,也…

【Spark精讲】RDD特性之数据本地化

首选运行位置 上图红框为RDD的特性五:每个RDD的每个分区都有一组首选运行位置,用于标识RDD的这个分区数据最好能够在哪台主机上运行。通过RDD的首选运行位置可以让RDD的某个分区的计算任务直接在指定的主机上运行,从而实现了移动计算而不是移…

【matlab进阶学习-6】 读取log数据data.txt文件,并做处理,导出报告/表格/图表

原始文件 原始文件格式txt,每一行对应一个数据,数据之间由逗号分割开 对应意思 时刻,电压,电流,功率,容量,,电流,功率,,RTC时间,状态…

内网服务器部署maven私服简记

前言 很多企业希望创建自己的maven私服,但服务器无法和外网连通,所以这里介绍一套完整的内网部署nexus的解决方案。实现的方式也很简单,将下载好的nexus安装和项目所需的依赖仓库都上传到服务i去上去,通过脚本的方式实现批量导入…

MySQL和 Oracle查看表信息

在日常Mysql和Oracle数据库使用时,经常使用到查看表、索引等信息,记录下来,方便备查。 MySQL 主要是使用 information_schema 信息表; Oracle 主要是使用 各种视图,如user_ind_columns。 一、查看所有表 MySQL查看表…

CSS的三大特性(层叠性、继承性、优先级---------很重要)

CSS 有三个非常重要的三个特性:层叠性、继承性、优先级。 层叠性 场景:相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突 的问题 原则:  样式冲突&am…

autojs-练手-视频号点赞(进阶版)

注释很详细,直接上代码 较初阶版新增内容 1. 简单但好用的ui界面 为方便大家参考,ui界面的模板单独拿出来了 ui界面模板 2. opencv图像识别 3. 需加载情况特殊处理(防卡壳) 4. 增加自动判断是否已点赞的情况 源码部分 // 启用…