关于 ** 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.补充说明:
- 流处理当前默认 :仍为 Pipelined Shuffle(截至 Flink 1.17)。
- 批处理演进 :
• Flink 1.13 默认 Blocking Shuffle(Hash 实现)。
• Hybrid Shuffle 未来可能成为批处理默认选项。 - 特殊场景 :
• RSS 适用于云原生和大规模集群。
• Sort-Merge Shuffle 解决高并发下的稳定性问题。 - Broadcast/Rebalance/hash Partition 常用场景
逻辑分区策略(如 keyBy、broadcast),底层仍依赖上述 Shuffle 实现