如何处理分析Flink作业反压的问题?
本文分享自华为云社区《一个Flink作业反压的问题分析》,原文作者:Yunz Bao 。
反压(backpressure)是实时计算应用开发中,特别是流式计算中,十分常见的问题。反压意味着数据管道中某个节点成为瓶颈,处理速率跟不上上游发送数据的速率,而需要对上游进行限速。
问题场景
客户作业场景如下图所示,从DMS kafka通过DLI Flink将业务数据实时清洗存储到DWS。
其中,DMS Kafka 目标Topic 6个分区,DLI Flink作业配置taskmanager数量为12,并发数为1。
问题现象
客户在DLI服务共有三个相同规格的队列,该作业在其中003号队列上运行正常,在001和002号队列上都存在严重的反压导致数据处理缓慢。作业列表显示如下图,可以看到Sink反压状态正常,Souce和Map反压状态为HIGH。
问题分析
根据反压情况分析,该作业的性能瓶颈在Sink,由于Sink处理数据缓慢导致上游反压严重。
该作业所定义的Sink类型为DwsCsvSink,该Sink的工作原理如下图所示:Sink将结果数据分片写入到OBS,每一分片写入完成后,调用DWS insert select sql将obs路径下该分片数据load到dws。
因此性能瓶颈出现在分片数据写入到OBS这一步。但问题来了,写同一个桶,为什么在不同队列上的表现不一致?
为此,我们排查了各个队列的CPU、内存和网络带宽情况,结果显示负载都很低。
这种情况下,只能继续分析FlinkUI和TaskManager日志。
数据倾斜?
然后我们在FlinkUI任务情况页面,看到如下情况:Map阶段的12个TaskManager并不是所有反压都很严重,而是只有一半是HIGH状态,难道有数据倾斜导致分配到不同TaskManager的数据不均匀?
然后看Source subTask详情,发现有两个TaskManager读取的数据量是其他几个的几十倍,这说明源端Kafka分区流入的数据量不均匀。难道就是这么简单的问题?
很不幸并不是,通过进一步分析源端数据我们发现Kafka 6个分区数据流入记录数相差并不大。这两个Task只是多消费了部分存量数据,接收数据增长的速度各TaskManager保持一致。
时钟同步
进一步分析TaskManager日志,我们发现单个分片数据写入OBS竟然耗费3min以上。这非常异常,要知道单个分片数据才500000条而已。
进一步通过分析代码发现如下问题:在写OBS数据时,其中一个taskmanager写分片目录后获取该目录的最后修改时间,作为处理该分片的开始时间,该时间为OBS服务端的时间。
后续其他taskmanager向该分片目录写数据时,会获取本地时间与分片开始时间对比,间隔大于所规定的转储周期才会写分片数据。
如果集群节点NTP时间与OBS服务端不同步,本地时间晚于OBS服务端时间,则会造成写入OBS等待。
后续排查集群节点,发现6个节点中一半时间同步有问题,这也和只有一半taskmanager反压严重的现象相对应。
问题修复
在集群节点上执行如下命令,强制时间同步。
systemctl stop ntp
ntpdate ntp.myhuaweicloud.com
systemctl start ntp
systemctl status ntp
date
NTP同步后,作业反压很快消失,故障恢复。
点击关注,第一时间了解华为云新鲜技术~
如何处理分析Flink作业反压的问题?相关推荐
- flink 出现反压场景, 异常场景造成Exceeded checkpoint tolerable failure threshold.
flink 出现反压场景,异常场景造成Exceeded checkpoint tolerable failure threshold. 监控反压情况 根据算子的InPool, OutPool 的比例, ...
- 【Flink】Flink 反压机制 导致checkpoint 失败
1.概述 转载:flink检查点checkpoint失败问题总结-2 问题描述:检查点刚开始是可以的做checkpoint的,后期越来越不能够做checkpoint的情况总结 2.反压问题 2.1 什 ...
- Flink 网络流控和反压剖析详解
传送门:Flink 系统性学习笔记 前言: 本文根据 Apache Flink 系列直播整理而成,由 Apache Flink Contributor.OPPO 大数据平台研发负责人张俊老师分享,社区 ...
- 一文弄懂Flink网络流控及反压
一文弄懂Flink网络流控及反压 1. 为什么需要网络流控? 2. 网络流控的实现:静态限速 3. 网络流控的实现:动态反馈/自动反压 3.1 案例一:Storm 反压实现 3.2 案例二:Spark ...
- 一文搞懂 Flink 网络流控与反压机制
看完本文,你能get到以下知识 Flink 流处理为什么需要网络流控? Flink V1.5 版之前网络流控介绍 Flink V1.5 版之前的反压策略存在的问题 Credit的反压策略实现原理,Cr ...
- Flink 网络流控与反压机制
Flink 流处理为什么需要网络流控? 分析一个简单的 Flink 流任务,下图是一个简单的Flink流任务执行图:任务首先从 Kafka 中读取数据. map 算子对数据进行转换.keyBy 按照指 ...
- Flink教程(31)- Flink网络流控及反压
文章目录 01 引言 02 为什么需要网络流控? 03 网络流控的实现:静态限速 04 网络流控的实现:动态反馈/自动反压 4.1 案例一:Storm 反压实现 4.2 案例二:Spark Strea ...
- 背压/反压/BackPressure
Flink系列文章 更多Flink系列文章请点击Flink系列文章 更多大数据文章请点击大数据好文推荐 转载声明 本文大量内容系转载自以下文章,有删改,并参考其他文档资料加入了一些内容: Apache ...
- 第十五篇:如何排查生产环境中的反压问题
你好,欢迎来到第 15 课时,这一课时我们主要讲解生产环境中 Flink 任务经常会遇到的一个问题,即如何处理好反压问题将直接关系到任务的资源使用和稳定运行. 反压问题是流式计算系统中经常碰到的一个问 ...
最新文章
- SmartDroid论文阅读
- python 类-Python中的类
- 基于OpenCL的深度学习工具:AMD MLP及其使用详解
- ITK:为每个像素添加常量
- 针对不同浏览器的css
- MVC源码分析 - Action查找和过滤器的执行时机
- 一张图看懂阿里云网络产品【四】NAT网关
- 2019职称计算机考试哪些地区取消,2019年职称计算机考试注意事项
- python numpy官方文档_[ Numpy中文文档 ] 介绍 - pytorch中文网
- python实现简单银行管理系统
- 使用Graghics2D实现证书签字盖章功能总结
- 等保2.0 等保二级基本要求与测评控制点
- LM4890功放电路的分析
- Addressing Failure Prediction by Learning Model Confidence
- 收敛因子和黄金正弦指引机制的蝴蝶优化算法
- VS 防反编译(混淆)dll、exe
- 企业级LNMP环境搭建
- 计算机职称照图片,全国职称计算机报名如何上传照片。怎么提示你无需上传照片。可以直接进行报名呢...
- 200万像素网络摄像机一天要多少容量
- (转载) android项目大全,总有你所需的
热门文章
- Bootstrap响应式内嵌元素
- CSS 块格式化上下文 BFC
- verp中joint的type、模式的区别
- SLAM Cartographer(13)基于Ceres库的扫描匹配器
- php 星座运势_星座运势查询示例代码
- 魔兽服务器联盟在线,《魔兽世界》怀旧服再开新服,部落联盟泾渭分明?
- edge浏览器怎么设置activex_微软在新Edge浏览器中拒绝了ActiveX插件技术
- python selenium 处理弹窗_Python+Selenium处理Windows弹窗(非IE弹窗问题)
- think php上传图片,上传 · ThinkPHP5.0完全开发手册 · 看云
- oracle唯一性索引的用法,sql – Oracle:基于函数的索引选择唯一性