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");
相关推荐
abcy0712136 小时前
flink datastream调用8种分区策略实例
flink
龙孚信息6 小时前
DXP进化论 贰-品牌出海深水区,你的数字体验基础设施跟上了吗?
大数据
kirs_ur8 小时前
SSD 在 AI 训练中的角色
大数据·服务器·人工智能
AI探索先锋8 小时前
AMD 2nm 芯片炸裂、欧洲首家人形机器人独角兽诞生、AI Agent 互联标准打响:10 条信号看懂产业变局|今日科技 AI 机器人快讯
大数据·人工智能·深度学习·搜索引擎·机器人
zzzll11119 小时前
字节 Agent 三面:讲讲 Agent 的记忆系统怎么设计?
大数据
聚焦前沿9 小时前
涡街流量计用户如何判断厂家是否靠谱
大数据·人工智能
莫名的好感°11 小时前
国内AI视频工具哪家强?FusionAI聚合即梦Seedance、可灵Kling、HappyHorse、Google Veo,一个平台看懂所有选择
大数据·人工智能
咖啡星人k11 小时前
企业内网引入 AI 编程:MonkeyCode 私有化部署思路
大数据·人工智能·私有化部署·monkeycode
oort12312 小时前
吃上了自家的细糠,还挺丝滑,用起来手感还行,OortCloud发布新版AI编程平台,下载 OortCodex,Token多,免费薅
大数据·开发语言·人工智能·ai编程