AWS Batch 文档
使用 AWS Batch,您可以打包批处理作业的代码,指定其依赖关系并使用 AWS 管理控制台、CLI 或 SDK 提交批处理作业。AWS Batch 不仅允许指定执行参数和作业依赖关系,还可以促进与多种批处理计算工作流引擎及语言(如 Pegasus WMS、Luigi、Nextflow、Metaflow、Apache Airflow 和 AWS Step Functions)的集成。AWS Batch 旨在预置和扩展 Amazon Elastic Container Service(ECS)、Amazon Elastic Kubernetes Service(Amazon EKS)和 AWS Fargate 计算资源,并提供根据作业要求使用按需型实例或竞价型实例的选项。AWS Batch 提供默认作业队列和计算环境定义,以帮助您开始使用。
Amazon EKS 上的 AWS Batch
AWS Batch 可以在您现有的 Amazon EKS 集群上运行您的批处理作业。您可以指定容器所需的 vCPU、内存和 GPU 要求,然后将其提交到队列,而该队列应连接至已启用 Amazon EKS 集群的计算环境。AWS Batch 旨在管理 Amazon EKS 节点的扩展和节点内容器组(pod)的放置。此外,AWS Batch 还会管理队列、依赖关系跟踪、作业重试、优先级设置和容器组(pod)提交,以及为 Amazon Elastic Compute Cloud(EC2)按需型和竞价型实例提供支持。AWS Batch 还支持在独立命名空间中与 Amazon EKS 集群进行集成。AWS Batch 可以为您管理容量,包括维护节点热池、在一定 vCPU 数量上限制容量、扩展节点,以及在单个集群或跨多个集群运行作业。
计算资源预置和扩展
在将 Fargate 或 Fargate Spot 与 AWS Batch 配合使用时,您可以在 AWS Batch 中设置一些概念(CE、作业队列和作业定义),您将拥有队列、调度器和计算架构,而无需管理计算基础设施。
对于需要 EC2 实例的人员而言,AWS Batch 的设计可提供托管计算环境,此类环境可根据所提交作业的卷和资源要求预置和扩展计算资源。您可以结合如下要求配置 AWS Batch 托管计算环境:EC2 实例类型、VPC 子网配置、跨所有实例的最少/最多/所需 vCPU 及您愿意为竞价型实例作为按需型实例价格百分比支付的金额。
此外,如果您需要针对 EC2 实例使用不同的配置(如更大的 EBS 卷或另一种操作系统)而不是 AWS Batch 托管计算资源所提供的配置,您还可以在 AWS Batch 非托管计算资源中预置和管理计算资源。您可以预置包含 Amazon ECS 代理的 EC2 实例并运行支持的 Linux 和 Docker 版本。然后,AWS Batch 可在您预置的 EC2 实例上执行批处理作业。
包含 Fargate 的 AWS Batch
包含 Fargate 资源的 AWS Batch 可让您为批处理作业提供无服务器架构。Fargate 旨在为作业提供所需的 CPU 和内存量(在允许的 Fargate SKU 范围内),帮助您避免资源浪费和等待 EC2 实例启动的时间。
如果您目前在使用 AWS Batch,Fargate 允许从 Amazon EC2 中分离出额外的层。Fargate 的设计理念在于:当向 AWS Batch 提交兼容 Fargate 的作业时,无需为运行在 Amazon EC2 和 Fargate 上的工作负载分别维护两种不同的服务。
AWS 提供配有托管队列的云原生计划程序,且可以指定优先级、重试、依赖项、超时等。AWS Batch 可帮助您管理向 Fargate 的提交以及作业的生命周期。
Fargate 还帮助提供安全性(例如 SOX、PCI 合规性)以及计算资源之间的隔离。
支持紧密耦合的 HPC 工作负载
AWS Batch 可支持多节点并行作业,可帮助您跨 EC2 实例运行单个作业。此功能允许您使用 AWS Batch 运行工作负载,例如,大规模紧密耦合的高性能计算(HPC)应用程序或分布式 GPU 模型训练。AWS Batch 的设计还支持 Elastic Fabric Adapter,这是一种网络接口,可在 AWS 上运行需要大规模节点间通信的应用程序。
精细作业定义和简单的作业依赖关系建模
借助 AWS Batch,您可以指定资源要求,如 vCPU 和内存、AWS Identity and Access Management(IAM)角色、卷挂载点、容器属性及环境变量,以定义如何执行作业。AWS Batch 可将您的作业作为容器化应用程序在 Amazon ECS 上运行。AWS Batch 还可帮助您定义不同作业之间的依赖关系。例如,您的批处理作业可能分为不同的处理阶段,且各个阶段所需资源不同。借助依赖关系,您可以创建资源要求不同的作业,其中下一个作业均依赖于上一个作业。
基于优先级的作业安排
AWS Batch 旨在设置多个具有不同优先级的队列。AWS Batch 作业会一直存储在队列中,直到计算资源可用于执行任务。AWS Batch 计划程序会根据每个任务的资源要求评估已提交给队列的任务的执行时间、执行位置及执行方式。该计划程序会评估每个队列的优先级并按最优计算资源(如内存与优化型 CPU)的优先级执行作业,只要这些作业依赖关系确定即可。
GPU 安排支持
通过 GPU 安排,您可以指定作业所需的加速器的数量和类型,作为 AWS Batch 中的作业定义输入变量。AWS Batch 将根据所需的 GPU 数量扩展适合您的作业实例,并根据每个作业的需要隔离加速器,因此只有合适的容器才能访问它们。
支持工作流引擎
AWS Batch 可与商用开源工作流引擎和语言集成(如 Pegasus WMS、Luigi、Nextflow、Metaflow、Apache Airflow,和 AWS Step Functions),以帮助您使用工作流语言为批量计算管道建模。
与 EC2 启动模块集成
AWS Batch 支持 Amazon EC2 启动模板,可帮助您为计算资源构建定制模板,并支持 AWS Batch 根据这些需求扩展实例。您可以指定 Amazon EC2 启动模板,以添加存储卷、指定网络接口、配置权限或者使用其他功能。Amazon EC2 启动模板通过将启动参数捕获到一项资源中,帮助您减少配置 AWS Batch 环境所需的步骤。
灵活的分配策略
AWS Batch 允许客户选择如何分配计算资源。这些策略使客户在决定 AWS Batch 应如何代表他们扩展实例时考虑到吞吐量和价格两方面因素。
集成的监控和日志记录
AWS Batch 的设计支持在 AWS 管理控制台中显示批处理作业的操作指标。您可以查看与计算容量相关的指标以及执行中、待执行和已完成的任务。AWS Batch 的设计支持在管理控制台中查看作业日志(例如 STDERR 和 STDOUT),并将其写入 Amazon CloudWatch Logs。
访问控制
AWS Batch 使用 IAM 控制和监控您的任务可访问的 AWS 资源,如 Amazon DynamoDB 表。通过 IAM,您可以为组织中的不同用户定义策略。比如,管理员可拥有对 AWS Batch API 操作的完全访问权限,开发人员可拥有与配置计算环境及注册任务相关的有限权限,而最终用户只能拥有提交和删除任务所需的权限。
其他信息
有关服务控制、安全特征和功能的更多信息,包括有关存储、检索、修改、限制和删除数据的信息(如适用),请参阅 https://docs.aws.amazon.com/index.html。就 http://aws.amazon.com/agreement 上的 AWS 客户协议或您与 AWS 之间签订的管理您使用 AWS 服务的其他协议而言,这些附加信息不构成文档的一部分。