MaxCompute 聚簇优化推荐简介

简介: 在大数据计算中,Shuffle 是资源消耗最大的环节之一。MaxCompute 提供聚簇优化推荐功能,通过调整 Cluster 表结构,有效减少 Shuffle 量,显著提升作业性能并节省计算资源。实际案例显示,该功能可帮助用户每日节省数 PB 的 Shuffle 数据量及数千 CU 的计算成本。

前言

在面向大数据的云数仓的 SQL 计算过程中,占用资源量最大的计算往往是 Shuffle。Shuffle 包含了将数据重分片和排序的两部分能力,是 SQL 执行层分布式计算的基础。用户作业在读表后,如果需要计算 Join,Group By,Window 等都需要做 Shuffle。

image.png


(图片来自于网络)

Shuffle 量的节省对作业性能优化至关重要。而如何在复杂数据 Shuffle 关系下选择最适用的 Cluster 表修改方案成为了 Shuffle 量节省的关键。MaxCompute 推出了针对这类多作业场景下全局最优 Cluster 表设置方案选择的能力,即 聚簇优化推荐

以 MaxCompute 内部项目 SO 为例,该项目通过 MaxCompute 聚簇推荐(即 Cluster 表推荐) 调整表的聚簇属性,节省了 2 PB 每天的 Shuffle 量,进而每日节省了 7000+ CU 的计算资源。

如何使用 Cluster 表优化 Shuffle 资源消耗

Shuffle 的概念来源于 MapReduce 中 Mapper 侧传递数据到 Reducer 之前数据分布式重分片排序的过程。大数据量下分布式SQL计算无法离开Shuffle。

以最简单等值连接为例,

select * from t1, t2
where t1.key1 = t2.key2;

其分布式计划执行过程如下图所示

  1. M1,M2 这两个 Stage 中的 worker 分别读取 Table1,Table2 中不同文件的数据,并按照 join key 分发到下游。其中数据被写入 到 Shuffle 分片 P1,P2 还是 P3 取决于 join key hash 计算取模后的结果。
  2. J3 中不同的 worker 读取不同分片的数据,排序,再执行连接,最后写到各自的输出文件中。比如 J3.Worker1 读取两侧 P1 的数据。

image.png

(两边都需要 Shuffle)

在实际计划执行的过程中,最重的操作就是将两个大表的数据通过 Shuffle 过程传递到下游 J3 具体执行Join 的 Worker 中。消除 Shuffle 可以为 MaxCompute 用户节省大量 Shuffle 代价,节省CU,加速作业执行。

参考 MaxCompute Hash Clustering,我们可以将 Table2 按照 join 的键 key2 修改为 Hash Cluster 表的 Cluster Key。 修改后,因为数据已经在Join之前提前做好了分片和排序,所以不再需要Shuffle。优化器的 Shuffle Removal 优化能力会识别到这种场景,简化执行计划,新的执行计划如下图

image.png

(消除了一边 Shuffle)

其中 Table2 的 Shuffle 被消除,M2 在读 Table2 数据后可以直接进行Join。如果将Table1 也做类似修改,则整个执行计划可以完全避免 Shuffle 代价。对于更多的表在相同 key 上做 multi join 的场景也是相似的。

下面是两个实际执行的作业,可以看出消除 Shuffle 后,延迟和资源使用都大幅度减少。

image.png

使用 聚簇优化推荐 作为 Shuffle 优化利器

MaxCompute 聚簇优化推荐 基于历史数据分析,精确计算 Shuffle 量的潜在优化空间,针对 Shuffle 量较大(10GB以上)收益高,风险小的场景,针对性推荐用户修改 Cluster 表。

用户案例(项目名均为缩写)

  • 以项目 SO 为例,该项目通过 MaxCompute 聚簇推荐(即 Cluster 表推荐) 调整表的聚簇属性,批量改造80 张表,节省了 2 PB / 天 的 Shuffle 量,进而节省了 7000+ CU / 天 的计算资源。
  • 以项目 AO 为例 该项目通过 MaxCompute 聚簇推荐 找到了项目中 Shuffle 量最大的 15 张表,针对性修改后,节省了 1.4 PB / 天 的 Shuffle 量,进而节省了 3100 + CU / 天 的计算资源,237 小时/天 的作业关键路径延迟。
  • 以项目 DA1 为例,根据 MaxCompute 聚簇推荐 的统计,该项目在 2025.07.23 的单日读表 Shuffle 量是 2.4 PB,其中 聚簇推荐表优化空间为 1.4 PB,以 1TB Shuffle 量对应 2~4 CU/天计算,该用户的潜在优化空间在 2800 ~ 5800 CU/天

这些 CU 的节省量是按照 100% 满资源分配计算,实际项目中只有较少的时间作业的实际资源使用能达到资源购买量的峰值。

未来的计划

我们在不断的和用户推进沟通中,发现了较多实际场景中的改进点。未来我们会逐步支持

  1. 优化器: Shuffle Removal 支持大范围读表分区场景,支持写表前 CASE WHEN,COALESCE 增全量合并写入 Cluster Key,支持更好的数据倾斜识别等。
  2. 智能数仓:支持面向数据过滤性,数据压缩率,不同数据类型索引的推荐与自动应用。
目录
相关文章
|
5月前
|
存储 分布式计算 大数据
MaxCompute聚簇优化推荐功能发布,单日节省2PB Shuffle、7000+CU!
MaxCompute全新推出了聚簇优化推荐功能。该功能基于 31 天历史运行数据,每日自动输出全局最优 Hash Cluster Key,对于10 GB以上的大型Shuffle场景,这一功能将直接带来显著的成本优化。
282 3
|
5月前
|
数据采集 搜索推荐 Java
Java 大视界 -- Java 大数据在智能教育虚拟学习环境构建与用户体验优化中的应用(221)
本文探讨 Java 大数据在智能教育虚拟学习环境中的应用,涵盖多源数据采集、个性化推荐、实时互动优化等核心技术,结合实际案例分析其在提升学习体验与教学质量中的成效,并展望未来发展方向与技术挑战。
|
4月前
|
存储 SQL 分布式计算
MaxCompute 聚簇优化推荐原理
基于历史查询智能推荐Clustered表,显著降低计算成本,提升数仓性能。
320 4
MaxCompute 聚簇优化推荐原理
|
4月前
|
存储 并行计算 算法
【动态多目标优化算法】基于自适应启动策略的混合交叉动态约束多目标优化算法(MC-DCMOEA)求解CEC2023研究(Matlab代码实现)
【动态多目标优化算法】基于自适应启动策略的混合交叉动态约束多目标优化算法(MC-DCMOEA)求解CEC2023研究(Matlab代码实现)
233 4
|
4月前
|
大数据 数据挖掘 定位技术
买房不是拍脑袋:大数据教你优化房地产投资策略
买房不是拍脑袋:大数据教你优化房地产投资策略
214 2
|
5月前
|
存储 人工智能 算法
Java 大视界 -- Java 大数据在智能医疗影像数据压缩与传输优化中的技术应用(227)
本文探讨 Java 大数据在智能医疗影像压缩与传输中的关键技术应用,分析其如何解决医疗影像数据存储、传输与压缩三大难题,并结合实际案例展示技术落地效果。
|
5月前
|
机器学习/深度学习 算法 Java
Java 大视界 -- Java 大数据机器学习模型在生物信息学基因功能预测中的优化与应用(223)
本文探讨了Java大数据与机器学习模型在生物信息学中基因功能预测的优化与应用。通过高效的数据处理能力和智能算法,提升基因功能预测的准确性与效率,助力医学与农业发展。
|
5月前
|
机器学习/深度学习 算法 Java
Java 大视界 -- Java 大数据在智能物流运输车辆智能调度与路径优化中的技术实现(218)
本文深入探讨了Java大数据技术在智能物流运输中车辆调度与路径优化的应用。通过遗传算法实现车辆资源的智能调度,结合实时路况数据和强化学习算法进行动态路径优化,有效提升了物流效率与客户满意度。以京东物流和顺丰速运的实际案例为支撑,展示了Java大数据在解决行业痛点问题中的强大能力,为物流行业的智能化转型提供了切实可行的技术方案。
|
5月前
|
机器学习/深度学习 数据采集 搜索推荐
你以为是“说走就走”?其实是“算好才走”:大数据是怎么悄悄优化旅游体验的?
你以为是“说走就走”?其实是“算好才走”:大数据是怎么悄悄优化旅游体验的?
114 0
|
4月前
|
机器学习/深度学习 传感器 分布式计算
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
355 14

热门文章

最新文章

相关产品

  • 云原生大数据计算服务 MaxCompute