AWS Batch
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

数组作业

数组作业是共享通用参数 (如作业定义、vCPU 和内存) 的作业。它会以一系列相关但独立的基本作业的形式运行,这些作业可能跨多个主机分布,而且可能同时运行。数组作业是执行高度并行的作业 (如 Monte Carlo 模拟、参数扫描或大型渲染作业) 的最高效方式。

像提交常规作业一样提交 AWS Batch 数组作业。但是,您可以指定一个数组大小 (介于 2 和 10000 之间) 来定义该数组中应运行的子作业数。如果您提交一个数组大小为 1000 的作业,则单个作业会运行并生成 1000 个子作业。该数组作业是用于管理所有子作业的参考或指针。这将允许您使用单个查询提交大型工作负载。

提交数组作业时,父数组作业会获取一般 AWS Batch 作业 ID。每个子作业都具有相同的基本 ID,但子作业的数组索引将附加到父 ID 的末尾,如数组的首个子作业的 example_job_ID:0

在运行时,AWS_BATCH_JOB_ARRAY_INDEX 环境变量将设置为容器的相应作业数组索引编号。第一个数组作业索引的编号为 0,后续尝试的编号按升序排列 (1、2、3,依此类推)。您可以使用此索引值来控制数组作业子级的差异。有关更多信息,请参阅 教程:使用数组作业索引控制作业差异化

对于数组作业依赖项,您可以为依赖项指定一种类型,如 SEQUENTIALN_TO_N。您可以指定 SEQUENTIAL 类型依赖项 (无需指定作业 ID),以便每个子数组作业按顺序完成 (从索引 0 开始)。例如,如果您提交一个数组大小为 100 的数组作业,并指定类型为 SEQUENTIAL 的依赖项,则会按顺序生成 100 个子作业,其中,首个子作业必须先成功,然后才能开始下一个子作业。下图显示作业 A,它是一个数组大小为 10 的数组作业。作业 A 的子索引中的每个作业均依赖于其前一个子作业。作业 A:1 无法启动,直到作业 A:0 完成。

您也可以为数组作业指定具有作业 ID 的 N_TO_N 类型依赖项,以便此作业的每个子索引必须等待每个依赖项的相应子索引完成后才能开始。下图显示作业 A 和作业 B,二者是数组大小均为 4 的数组作业。作业 B 的子索引中的每个作业均依赖于作业 A 中的相应索引。作业 B:1 无法开始,直到作业 A:1 完成。

如果您取消或终止父数组作业,则其所有子作业将随它一起取消或终止。您可以取消或终止单个子作业 (这会将它们迁移至 FAILED 状态),而不会影响其他子作业。但是,如果子数组作业失败 (自行或通过手动取消/终止),则父作业也会失败。