AWS Batch

自动调度数十万规模的批处理作业,并在最优计算资源上执行的全托管服务

概述

AWS Batch 是一项自动化批处理计算工作负载的规划、调度和执行的全托管服务。将作业提交到作业队列后,Batch 会自动预置所需的计算资源 (EC2 实例或 Fargate),在解决作业依赖关系的同时以最优顺序执行。适用于基因组分析、金融风险计算、视频编码、机器学习预处理等需要大量并行计算的工作负载。通过与 Spot 实例集成,可以降低成本。

EC2 与 Fargate 计算环境

AWS Batch 的计算环境定义了执行作业的基础设施。EC2 环境中可指定实例类型、最小/最大 vCPU 数和是否使用 Spot 实例。Fargate 环境无需管理实例,只需为每个作业指定所需的 vCPU 和内存即可执行。选择时可参考以下标准:需要 GPU、需要特定实例类型或使用多节点并行作业 (MPI) 的 HPC 工作负载适合选择 EC2,其他情况可考虑 Fargate。在 EC2 环境中使用 Spot 实例时,只要设置了重试策略,因中断而失败的作业就可以在其他实例上重新运行,因此对于具有中断容忍性的工作负载,可以相比按需实例降低成本 (折扣率请参阅 AWS 官方的 Spot 实例价格页面)。Azure Batch 也提供类似的作业调度;在 AWS Batch 中,选择基于 Fargate 的环境即可无需管理实例。

作业队列与依赖关系控制

Batch 的作业调度由作业队列和作业定义两个概念组成。作业队列可设置优先级,高优先级队列的作业会先于低优先级队列执行。将多个计算环境关联到一个作业队列,可以实现按需实例不足时回退到 Spot 实例的配置。作业间的依赖关系只需在提交作业时指定依赖作业的 ID,Batch 就会自动解决执行顺序。使用数组作业 (Array Job) 可以用同一作业定义批量提交数千个作业,每个作业分配索引号,通过索引控制处理 S3 文件列表中的第几个文件是一种设计模式。

Step Functions 集成与重试策略

AWS Batch 的典型应用是数据流水线的大规模并行处理。通过 EventBridge 检测到达 S3 的数千个文件,经 Step Functions 提交 Batch 作业,并行处理各文件后将结果写回 S3 是一种典型架构。通过与 Step Functions 集成,可以声明式地定义等待 Batch 作业完成、根据成功或失败分支后续处理的工作流。作业定义中可设置重试策略 (最大重试次数、重试条件),自动恢复因临时错误导致的作业失败。重试条件可指定退出码或错误消息的模式,实现仅对特定错误 (如内存不足) 进行重试的精细控制。成本优化的要点是适当设置作业超时,防止挂起的作业无限消耗资源。

参考资料(AWS 官方)

本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。

如本页内容与官方文档不一致,请以官方文档为准。

分享XB!