關于 ** ?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 實現