数组任务 - Amazon Batch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

数组任务

数组作业是共享通用参数 (如作业定义、vCPU 和内存) 的作业。它作为一组相关但独立的基本任务运行,这些任务可能分布在多个主机上,并且可以同时运行。数组任务是运行极其parallel 作业(例如蒙特卡罗模拟、参数化扫描或大型渲染作业)的最有效方法。

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

提交数组作业时,父数组作业会获取一般 Amazon Batch 作业 ID。每个子任务都有相同的基本 ID。但是,子任务的数组索引会附加到父 ID 的末尾,example_job_ID:0例如数组的第一个子任务。

父阵列作业可以输入SUBMITTEDPENDINGFAILED、或SUCCEEDED状态。父阵列作业依赖于子任务,从不进入RUNNABLERUNNING状态。有关作业依赖的更多信息,请参阅Job 依赖项

在运行时,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 完成。

您也可以指定 N_TO_N 类型依赖项,并指定数组任务的任务 ID 。这样一来,此作业的每个子索引必须等待每个依赖项的相应子索引完成后才能开始。下图显示了Job A 和Job B,这两个阵列作业,每个任务的数组大小为 10,000。作业 B 的子索引中的每个作业均依赖于作业 A 中的相应索引。作业 B:1 无法开始,直到作业 A:1 完成。

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