AWS Glue作业:如何将活跃执行器提升至需求的40个?
AWS Glue作业活跃执行器不足问题排查与优化
核心结论
当前集群最大可分配执行器(98)远高于需求的40,并非集群无法配置足够执行器,问题出在作业并行度、数据分布或资源调度逻辑上。
具体排查与优化步骤
1. 调整Spark并行度配置
- 检查并修改
spark.sql.shuffle.partitions:默认值200可能过低,导致shuffle阶段任务量不足,无法驱动更多executor。建议设置为活跃executor数的2-3倍(如120-150),或按每200MB数据对应一个分区计算。 - 配置
spark.default.parallelism:设置为活跃executor数 × 每个executor核数(G.2X默认每个executor4核,40×4=160),确保RDD任务有足够并行度。
2. 优化数据分布与任务粒度
- 检查输入数据分区:若数据源分区数过少(如少量大文件),Spark无法拆分出足够任务填满executor。对数据做预分区(按业务键分桶/按时间分区),或用
repartition调整分区数至executor数的2-3倍以上。 - 排查数据倾斜:通过Spark UI的
Stages页查看任务执行时间和数据量,定位热点键。采用加盐拆分、过滤异常值等方式解决倾斜,避免单个任务占用过多executor资源。
3. 修正Glue作业资源参数
- 确认
--num-executors参数:若作业启动时指定的该值小于40,会直接限制活跃executor数量,需设置为40或更高(不超过98)。 - 核对
--executor-memory/--executor-cores:G.2X Worker默认支持单executor(4核+16GB内存),若手动调整导致单executor资源超出Worker承载,会减少可启动的executor数,建议保持默认配置。
4. 排查AWS资源配额与服务限制
- 检查Glue DPU配额:若账户当前区域的DPU配额不足100,会导致无法启动足够Worker。在AWS Console的Glue页面查看配额,不足则提交提升申请。
- 分析日志与Spark UI:查看CloudWatch日志中是否有executor启动失败记录(如资源不足、网络错误);启用作业的Spark UI,定位调度阶段的阻塞点。
5. 优化作业执行逻辑
- 拆分串行任务链:避免大量窄依赖的串行任务,尽量将逻辑拆分为可并行执行的阶段,减少executor空闲时间。
- 合理使用缓存:避免不必要的数据缓存,减少内存占用。使用
persist/cache后及时释放不再需要的缓存数据。
内容的提问来源于stack exchange,提问作者Bab
相关产品推荐
相关产品推荐

