当前位置: 首页 > news >正文

flink Shuffle的总结

关于 ** ​5 种 Shuffle 类型** 的区别、使用场景及 Flink 版本支持的总结:

* 注意:下面是问AI具体细节与整理学习


1. 核心区别

Shuffle 类型核心特点使用场景Flink 版本支持
Pipelined Shuffle流式调度,纯内存交换,低延迟(毫秒级),支持反压机制。流处理默认模式(如实时监控、风控)。所有版本(流处理默认)
Blocking Shuffle分阶段调度,数据全量落盘,高吞吐但高延迟。子类型:
- Hash Shuffle(默认)
- Sort-Merge Shuffle(优化版)
批处理默认模式(如离线分析)。所有版本(批处理默认);
Sort-Merge 从 1.12+。
Hybrid Shuffle流批融合,动态选择内存或磁盘存储,优先内存交换,资源不足时落盘。批处理优化场景(资源波动、数据倾斜)。批处理:Flink 1.16+。
Remote Shuffle Service (RSS)存储计算分离,独立集群管理 Shuffle 数据,支持云原生部署(如 Apache Celeborn)。大规模批处理(PB 级数据)。插件化支持(Flink 1.14+)。
Sort-Merge Shuffle批处理优化,数据排序后合并写入,减少文件数量和随机 I/O。高并发批作业(如超大规模 ETL)。批处理:Flink 1.12+ 实验性,1.13+ 生产可用。

2. 使用场景

Pipelined Shuffle
场景:实时流处理(如实时风控、监控告警)。
优势:低延迟,适合对实时性要求高的场景。
缺点:资源占用高,可能因反压导致内存积压。

Blocking Shuffle
场景:离线批处理(如 TPC-DS 分析任务)。
优势:资源利用率高,适合大规模数据批处理。
缺点:磁盘 I/O 开销大,性能较低。

Hybrid Shuffle
场景:批处理作业(尤其资源波动或数据倾斜场景)。
优势:结合内存和磁盘,减少 I/O 负载,提升资源利用率(如 TPC-DS 性能提升 7.2%~18.74%)。
缺点:需权衡落盘策略(全落盘容错性好,选择性落盘性能更优)。


3. Flink 版本支持

Shuffle 类型流处理版本批处理版本
Pipelined Shuffle从早期版本支持(默认)不适用
Blocking Shuffle不适用从早期版本支持
Hybrid Shuffle不适用Flink 1.16 引入

4. 说明

Hybrid Shuffle 的演进
• Flink 1.16 首次引入,1.17 优化了广播数据和资源调度。
• 支持两种落盘策略:全落盘(容错性好)和选择性落盘(性能优)。
流批融合趋势:Hybrid Shuffle 是 Flink 流批一体化的关键,未来可能扩展至流处理场景。

5.补充说明:

  1. 流处理当前默认:仍为 Pipelined Shuffle(截至 Flink 1.17)。
  2. 批处理演进
    • Flink 1.13 默认 Blocking Shuffle(Hash 实现)。
    • Hybrid Shuffle 未来可能成为批处理默认选项。
  3. 特殊场景
    • RSS 适用于云原生和大规模集群。
    • Sort-Merge Shuffle 解决高并发下的稳定性问题。
  4. Broadcast/Rebalance/hash Partition 常用场景
    逻辑分区策略(如 keyBy、broadcast),底层仍依赖上述 Shuffle 实现
http://www.dtcms.com/a/117300.html

相关文章:

  • [ctfshow web入门] web19
  • 第四讲:类与对象(下)
  • 如何在React中集成 PDF.js?构建支持打印下载的PDF阅读器详解
  • mapbox基础,加载栅格图片到地图
  • QMT实盘代码案例教学:etf全球配置策略
  • 深入理解Java性能调优与JVM底层机制
  • 柯尼卡美能达CA-410-CA-VP427 P427
  • 从 “单打独斗” 到 “生态共赢” 跨境货源池的协同增长逻辑
  • 摄像头模块对焦方式的类型
  • Java基础 4.7
  • 基于Python的二手房数据挖掘与可视化深度分析
  • STM32单片机入门学习——第22节: [7-2] AD单通道AD多通道
  • AutoAgent: 香港大学开源的AI智能体框架
  • ARM-IIC
  • #简易线程池...实现原理
  • 从零开始的图论讲解(1)——图的概念,图的存储,图的遍历与图的拓扑排序
  • ubuntu 20.04 编译和运行A-LOAM
  • std::async 和 std::thread 的主要区别
  • 使用Vue、Nodejs以及websocket搭建一个简易聊天室
  • 项目难点亮点
  • 国密算法(SM2/SM3/SM4)与国际算法(AES/RSA/SHA-256)
  • 数据集的训练-测试拆分在机器学习中的重要性
  • Mac下Homebrew的安装与使用
  • SLAAC 与 DHCPv6 笔记250405
  • adb devices报错 ADB server didn‘t ACK
  • 第八届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组 购物单
  • 23种设计模式-行为型模式-状态
  • 使用 Qt 和 OBS 工具检测系统硬件编码器支持情况(NVENC、QSV、AMF)
  • InceptionNeXt:When Inception Meets ConvNeXt论文翻译
  • ML:Sigmoid 饱和函数