Flink 任务调优案例分析

案例一

调优前任务

任务拓扑:

数据倾斜的算子:

数据并行度为380,独享槽,最大数据量为1亿,最小数据量为98万,数据倾斜达到100倍以上

调优后任务

任务拓扑:

数据倾斜算子调优后:

数据并行度为148,最大数据量为98万,最小数据量为72万,数据倾斜度不到1倍,几乎不存在。并行度降为原来的38%,并且为共享槽。

调优前资源使用量: 2002cpu,5016g内存,250TM,500slots;

调优后资源使用量: 400cpu,656g内存,80TM,160slots;

资源使用基本降为原来的1/5。

由于之前的数据倾斜严重导致checkpoint迟迟过不去,只能通过加资源和配置【Tolerable Failed Checkpoints 】来缓解数据倾斜的情况;调优以后数据倾斜的情况不存在了,checkpoint更容易对齐和成功,所以资源使用量大大降低。

调优手段

主要用到的调优手段

  1. 加盐,由于当前数据倾斜的算子存在一对多的情况(A:B=1:n)。所以通过在A stream 加盐前缀并扩大n倍的数据量下发数据到下游,比如:1#100,2#100,...,n#100;在B stream 加随机盐值下发数据到下游,比如:1#100,2#101,5#102,8#103,...,n#123。
  2. 通过测流来减少不必要数据量的计算
  3. 通过滚动窗口去重,减少数据下发,减轻下游的压力,例如:
java 复制代码
DataStream<Tuple2<String, String>> tumblingProcessingTimeWindows = loadProgressTableSkewStream
                .keyBy(v -> v.f0)
                .window(TumblingProcessingTimeWindows.of(Time.seconds(5)))  // 5秒钟滚动窗口
                .reduce((v1, v2) -> v2)
                .uid("tumblingProcessingTimeWindows")
                .name("tumblingProcessingTimeWindows");
相关推荐
7***u21620 小时前
显卡(Graphics Processing Unit,GPU)架构详细解读
大数据·网络·架构
Qzkj6661 天前
从规则到智能:企业数据分类分级的先进实践与自动化转型
大数据·人工智能·自动化
q***47431 天前
PostgreSQL 中进行数据导入和导出
大数据·数据库·postgresql
寰宇视讯1 天前
奇兵到家九周年再进阶,获36氪“WISE2025商业之王 年度最具商业潜力企业”
大数据
声网1 天前
活动推荐丨「实时互动 × 对话式 AI」主题有奖征文
大数据·人工智能·实时互动
Hello.Reader1 天前
在 YARN 上跑 Flink CDC从 Session 到 Yarn Application 的完整实践
大数据·flink
Learn Beyond Limits1 天前
Data Preprocessing|数据预处理
大数据·人工智能·python·ai·数据挖掘·数据处理
放学有种别跑、1 天前
GIT使用指南
大数据·linux·git·elasticsearch
gAlAxy...1 天前
SpringMVC 响应数据和结果视图:从环境搭建到实战全解析
大数据·数据库·mysql
ganqiuye1 天前
向ffmpeg官方源码仓库提交patch
大数据·ffmpeg·video-codec