论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
大数据
›
数据仓库与分析
›
Flink数据倾斜优化 FlinkSql及FlinkDataStream
Flink数据倾斜优化 FlinkSql及FlinkDataStream
海哥
论坛元老
|
2025-2-24 05:19:01
|
显示全部楼层
|
阅读模式
楼主
主题
1000
|
帖子
1000
|
积分
3000
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
一.征象及解决
1).
征象
:相同 Task 的多个 Subtask 中,个别 Subtask 接收到的数据量显着大于其他 Subtask 接收到的数据量,通过Flink Web U1 可以精确地看到每个 Subtask 处理了多少数据,即可判定出 Flink 使命是否存在数据倾斜。通常,数据倾斜也会引起反压。
2).
解决
:
(1)
数据源倾斜
比如消耗 katka,但是 katka 的 topic 的分区之间数据不平衡读进来之后调用重分区算子:rescale、rebalance、shuffle,
(2)
单表分组聚合(纯流式)倾斜
API:利用 fatmmap 攒批、预聚合
SQL:开启 MiniBatch+LocalGloba
(3)
单表分组开窗聚合倾斜第一阶段聚合
key 拼接随机数前缀或后缀,进行keyby、开窗、聚合注意:聚合完不再是 WindowedStream,要获取 WimndowEnd 作为窗口标记作为第二阶段分组依据,制止差别窗口的效果聚合到一起)
第二阶段聚合:按照原来的 key 及 windowEnd 作 keyby、聚合
在项目中,用到 clickhouse,可以第一阶段打散聚合后,直接写入 clickhouse,查 clickhouse 再处理第二阶段
二.FlinkSQL中数据倾斜怎样产生的?怎样解决?
1
).产生
:在编写FlinkSQL中数据分布不平衡、key值分布不均、JOIN关联键分布不均、JOIN表巨细差异大、窗口操纵题目、并行度不当、数据动态的变化都会导致FlinkSQL在编写过程中造成数据倾斜。
2
)
.
解决
:
数据准备阶段 (数据预处理)
数据采样与分析
:在正式处理数据之前,对数据进行采样分析,相识数据的分布情况,包括数据量巨细、Key 的取值分布等。通太过析可以提前发现大概导致数据倾斜的因素,如某些 Key 的取值过于集中等,为后续的处理提供依据。
数据平衡处理
:根据数据采样分析的效果,对数据进行必要的平衡处理。如果发现数据在某个维度上分布不均匀,可以采用一些数据预处理技术,如对数据进行重新分区、打散等操纵,使数据在进入 Flink SQL 处理流程之前只管均匀分布。
SQL 语句优化
合理计划 JOIN 操纵
选择合适的 JOIN 类型
:根据参与 JOIN 的表的特点和业务需求,选择合适的 JOIN 类型。例如,当一张表较小且可以完全加载到内存中时,可以思量使用广播 JOIN(Broadcast JOIN),将小表广播到所有节点,制止数据 shuffle,从而减少数据倾斜的大概性。
优化 JOIN 条件
:确保 JOIN 条件的合理性,制止使用过于复杂或容易导致数据倾斜的关联条件。如果大概,可以对 JOIN 条件进行调整,使关联键的分布更加均匀。
优化 GROUP BY 操纵
:在使用 GROUP BY 进行分组聚适时,只管选择分布均匀的列作为分组依据。如果无法制止使用分布不均匀的列,可以思量对这些列进行预处理,如通过添加随机前缀或后缀等方式对 Key 进行打散,使数据在分组时可以大概更加均匀地分布到差别的分组中。
审慎使用窗口操纵
:在使用窗口函数时,要根据数据的特点和业务需求合理设置窗口巨细和滑动步长。如果数据在时间或其他维度上存在显着的不均匀分布,可以思量采用动态窗口或自顺应窗口,根据数据的现实情况动态调整窗口的划分,制止固定窗口导致的数据倾斜。
系统配置优化
合理设置并行度
:根据数据量巨细、数据分布情况以及集群资源等因素,合理设置 Flink 作业的并行度。一般来说,可以通过性能测试和调优等手段,找到一个合适的并行度,使数据可以大概均匀地分配到各个使命中进行处理。同时,可以思量使用自顺应并行度调整策略,根据作业的负载情况自动调整并行度。
优化资源分配
:确保集群中各节点的资源分配均匀合理,制止因资源差异导致使命调理不平衡而产生数据倾斜。可以根据节点的性能和资源情况,对使命进行合理的分配,或者使用一些资源调理算法,使资源分配更加科学。
监控与动态调整
实时监控作业状态
:在 Flink SQL 作业运行过程中,通过 Flink 的监控系统实时监控作业的运行状态,包括数据处理速率、各使命的负载情况、数据倾斜情况等。一旦发现数据倾斜题目,及时进行分析和处理。
动态调整策略
:根据监控效果,动态调整作业的相关参数和策略。例如,当发现某个使命出现数据倾斜时,可以动态调整该使命的并行度,或者对数据进行重新分区等操纵,及时缓解数据倾斜题目。
总结:针对差别场景下的FlinkSQL做出的优化
三.FlinkDataStream怎样产生的数据倾斜?如何解决?
1)
.产生
:
数据源不均匀使数据自己的特性及数据采集题目存在差异、Key分布不均匀造成业务逻辑分组处理不均、窗口巨细和滑动步长设置不当导致少量集中引发数据倾斜、特定时间段会造成数据热门题目导致数据集中从而引发数据倾斜、JOIN关联键分布不均及维表数据倾斜也会造成数据倾斜、使命并行设置和并行度的设置不均。以上题目大概会导致数据倾斜。
2).
解决
:
数据预处理
均匀采样与打散
:在数据进入 Flink 处理流程前,对数据进行均匀采样和打散处理。例如,对于按用户 ID 分区的数据,如果发现某些用户的数据量特别大,可以对这些用户的数据进行随机采样,然后将采样后的数据与其他用户的数据混合均匀。
过滤掉无效数据
:在数据源头对显着非常或无效的数据进行过滤,减少不必要的数据处理,制止这些数据对整体数据分布的影响。
优化 Key 的选择与分布
选择更合适的 Key
:在进行分组或关联操纵时,仔细分析数据特点,选择分布更均匀的 Key。如果以用户 ID 作为 Key 导致数据倾斜,可以思量根据业务规则构造新的 Key,如对用户 ID 进行哈希取模后再分组。
加盐处理
:对于 Key 分布不均匀的情况,可以通过在 Key 上添加随机前缀或后缀的方式进行 “加盐”,使数据在分区时更加均匀。
调整窗口设置
合理设置窗口巨细和滑动步长
:根据数据的流量和业务需求,调整窗口的巨细和滑动步长,制止大量数据集中在少数几个窗口中。
动态调整窗口
:根据数据的实时流量和分布情况,动态调整窗口的巨细和滑动步长,以顺应数据的变化。
优化 Join 操纵
广播小表
:如果 Join 操纵中的一张表数据量较小,可以将其广播到所有节点,制止数据在网络传输过程中的倾斜。
调整 Join 策略
:根据数据的特点和分布情况,选择合适的 Join 策略,如 Hash Join、Sort-Merge Join 等。
合理设置并行度
根据数据量和处理能力设置并行度
:通太过析数据量的巨细和系统的处理能力,合理设置使命的并行度,确保每个并行使命处理的数据量相对平衡。
动态调整并行度
:在作业运行过程中,根据数据的实时流量和处理情况,动态调整使命的并行度,以进步系统的资源利用率和处理效率。
总结:
四.总结
总而言之解决数据倾斜 1).提升性能(减少使命的执行时间、进步资源利用率)2).稳固性增强(制止人数失败、减少背压和反压) 3).降低成本(软件资源成本、运维成本) 4).效果准确性进步(制止数据丢失或重复盘算)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
海哥
论坛元老
这个人很懒什么都没写!
楼主热帖
makefile简单脚本编写和Linux调试器gdb ...
【第90题】JAVA高级技术-网络编程9(简 ...
CMOS图像传感器——黑电平校正 ...
什么是精准卫星授时?什么是NTP网络时 ...
TCP 时间戳妙用
Linux【实操篇】—— 日志管理 ...
C++ 深度解析教程(十七)C 语言异常处 ...
windows提权-系统错误配置提权 ...
如何使用 FlowUs 、Notion 等笔记软件 ...
「低功耗蓝牙模块」主从一体 蓝牙嗅探- ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
物联网
分布式数据库
Mysql
快速回复
返回顶部
返回列表