返回
阿里云EMR Remote Shuffle Service新功能点睛之笔:AQE与流控
后端
2023-10-12 14:56:34
阿里云EMR自2020年推出Remote Shuffle Service(RSS)以来,帮助了诸多客户解决Spark作业的性能、稳定性问题,并使得存算分离架构得以实施。为了更方便大家使用和扩展RSS,阿里云EMR团队在RSS 3.3版本中推出了两大新功能:AQE(自动查询优化)和流控。
AQE(Automatic Query Execution Optimization)
AQE是RSS 3.3版本中推出的一个重要功能,它可以自动优化Spark SQL查询的执行计划,从而提高查询性能。AQE主要通过以下几种方式来优化查询执行计划:
- 选择最优的Join算法:AQE可以根据查询的实际数据分布和查询条件,选择最优的Join算法,如Sort-Merge Join、Hash Join或Broadcast Join等。
- 选择最优的数据读取顺序:AQE可以根据查询的实际数据分布和查询条件,选择最优的数据读取顺序,如顺序扫描、随机访问或分区扫描等。
- 选择最优的Shuffle算法:AQE可以根据查询的实际数据分布和查询条件,选择最优的Shuffle算法,如Sort-based Shuffle、Hash-based Shuffle或Exchange Shuffle等。
流控(Flow Control)
流控是RSS 3.3版本中推出的另一个重要功能,它可以控制Spark作业在执行过程中产生的Shuffle数据流的速率,从而避免Shuffle数据流过大而导致网络拥塞或作业失败。流控主要通过以下几种方式来控制Shuffle数据流的速率:
- 基于背压的流控: 当Shuffle数据流过大时,接收端会向发送端发送背压信号,要求发送端降低数据发送速率。
- 基于速率限制的流控: 用户可以为Shuffle数据流设置一个速率限制,当Shuffle数据流的速率超过该限制时,发送端会自动降低数据发送速率。
- 基于拥塞控制的流控: 当网络拥塞时,发送端会自动降低数据发送速率,以避免网络拥塞加剧。
AQE和流控的应用场景
AQE和流控可以广泛应用于各种Spark作业,包括:
- 数据仓库查询: AQE可以自动优化数据仓库查询的执行计划,从而提高查询性能。
- 机器学习训练: AQE可以自动优化机器学习训练作业的执行计划,从而提高训练速度。
- 流式计算: 流控可以控制流式计算作业产生的Shuffle数据流的速率,从而避免网络拥塞或作业失败。
AQE和流控的使用方法
AQE和流控的使用方法非常简单,只需在Spark作业中设置相应的配置参数即可。具体来说,AQE可以通过设置spark.sql.adaptive.enabled参数来启用,流控可以通过设置spark.shuffle.service.flowControlEnabled参数来启用。
AQE和流控的优势
AQE和流控具有以下优势:
- 提高性能: AQE和流控可以提高Spark作业的性能,尤其是对于数据量大、计算复杂的作业。
- 提高稳定性: AQE和流控可以提高Spark作业的稳定性,减少作业失败的风险。
- 易于使用: AQE和流控的使用方法非常简单,只需在Spark作业中设置相应的配置参数即可。
结论
AQE和流控是RSS 3.3版本中推出的两大新功能,它们可以帮助用户轻松应对大数据挑战,提高Spark作业的性能和稳定性。