在截止日期云中安排作业 - AWS 截止日期云

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

在截止日期云中安排作业

任务创建后,De AWS adline Cloud 会安排在与队列关联的一个或多个队列上对其进行处理。处理特定任务的队列是根据为队列配置的功能和特定步骤的主机要求来选择的。

作业按尽力而为的优先顺序排列,从高到低。当两个作业具有相同优先级时,将首先安排最早的作业。

以下各节详细介绍了安排作业的过程。

确定机队兼容性

创建任务后,Deadline Cloud 会根据与提交任务的队列关联的队列的能力来检查作业中每个步骤的主机要求。如果舰队符合东道主的要求,则该任务将进入该READY状态。

如果任务中的任何步骤具有与队列关联的队列无法满足的要求,则该步骤的状态将设置为NOT_COMPATIBLE。此外,作业中的其余步骤也将被取消。

舰队的能力是在舰队级别设置的。即使车队中的工人符合工作要求,如果其车队不符合工作要求,也不会从工作中为其分配任务。

以下作业模板的步骤指定了该步骤的主机要求:

name: Sample Job With Host Requirements specificationVersion: jobtemplate-2023-09 steps: - name: Step 1 script: actions: onRun: args: - '1' command: /usr/bin/sleep hostRequirements: amounts: # Capabilities starting with "amount." are amount capabilities. If they start with "amount.worker.", # they are defined by the OpenJD specification. Other names are free for custom usage. - name: amount.worker.vcpu min: 4 max: 8 attributes: - name: attr.worker.os.family anyOf: - linux

可以将此任务安排给具有以下功能的舰队:

{ "vCpuCount": {"min": 4, "max": 8}, "memoryMiB": {"min": 1024}, "osFamily": "linux", "cpuArchitectureType": "x86_64" }

无法将此任务安排给具有以下任何功能的舰队:

{ "vCpuCount": {"min": 4}, "memoryMiB": {"min": 1024}, "osFamily": "linux", "cpuArchitectureType": "x86_64" } The vCpuCount has no maximum, so it exceeds the maximum vCPU host requirement. { "vCpuCount": {"max": 8}, "memoryMiB": {"min": 1024}, "osFamily": "linux", "cpuArchitectureType": "x86_64" } The vCpuCount has no minimum, so it doesn't satisfy the minimum vCPU host requirement. { "vCpuCount": {"min": 4, "max": 8}, "memoryMiB": {"min": 1024}, "osFamily": "windows", "cpuArchitectureType": "x86_64" } The osFamily doesn't match.

舰队扩展

将任务分配给兼容的服务托管队列时,队列会自动缩放。车队中的工作人员数量会根据可供车队运行的任务数量而波动。

将任务分配给客户管理的队列时,工作人员可能已经存在,或者可以使用基于事件的 auto Scaling 创建工作人员。有关更多信息,请参阅 Amazon Auto Scaling 用户指南中的用于 EventBridge处理EC2自动扩展事件

会话

作业中的任务分为一个或多个会话。工作人员运行会话来设置环境,运行任务,然后拆除环境。每个会话都由工作人员必须采取的一项或多项操作组成。

工作人员完成分区操作后,可以向该工作人员发送其他会话操作。工作人员在会话中重复使用现有环境和作业附件,以更高效地完成任务。

作业附件由您使用的提交者创建,作为 Deadline Cloud CLI 作业捆绑包的一部分。您也可以使用create-job AWS CLI 命令的--attachments选项来创建作业附件。环境在两个位置定义:附加到特定队列的队列环境和在作业模板中定义的作业步骤环境。

有四种会话操作类型:

  • syncInputJobAttachments— 将输入的作业附件下载给工作人员。

  • envEnter— 对环境执行onEnter操作。

  • taskRun— 执行任务的onRun操作。

  • envExit— 对环境执行onExit操作。

以下作业模板具有步骤环境。它有一个onEnter用于设置步骤环境的onRun定义、一个定义要运行的任务的定义以及一个用于拆除步骤环境的onExit定义。为此作业创建的会话将包括一个envEnter操作、一个或多个taskRun操作,然后是一个envExit操作。

name: Sample Job with Maya Environment specificationVersion: jobtemplate-2023-09 steps: - name: Maya Step stepEnvironments: - name: Maya description: Runs Maya in the background. script: embeddedFiles: - name: initData filename: init-data.yaml type: TEXT data: | scene_file: MyAwesomeSceneFile renderer: arnold camera: persp actions: onEnter: command: MayaAdaptor args: - daemon - start - --init-data - file://{{Env.File.initData}} onExit: command: MayaAdaptor args: - daemon - stop parameterSpace: taskParameterDefinitions: - name: Frame range: 1-5 type: INT script: embeddedFiles: - name: runData filename: run-data.yaml type: TEXT data: | frame: {{Task.Param.Frame}} actions: onRun: command: MayaAdaptor args: - daemon - run - --run-data - file://{{ Task.File.runData }}

步骤依赖关系

Deadline Cloud 支持定义步骤之间的依赖关系,以便一个步骤等到另一个步骤完成后再开始。您可以为一个步骤定义多个依赖关系。只有在所有依赖项都完成之后,才会安排具有依赖关系的步骤。

如果作业模板定义了循环依赖关系,则该作业将被拒绝,作业状态将设置为CREATE_FAILED

以下作业模板创建了一个包含两个步骤的作业。 StepB取决于StepAStepB仅在成功StepA完成后运行。

作业创建后,StepA处于READY状态并StepB处于PENDING状态。StepA完成后,StepB移动到READY状态。如果StepA失败或已取消,则StepAStepB移至CANCELED状态。

您可以为多个步骤设置依赖关系。例如,如果同时StepC依赖StepAStepBStepC则要等到其他两个步骤完成后才会启动。

name: Step-Step Dependency Test specificationVersion: 'jobtemplate-2023-09' steps: - name: A script: actions: onRun: command: bash args: ['{{ Task.File.run }}'] embeddedFiles: - name: run type: TEXT data: | #!/bin/env bash set -euo pipefail sleep 1 echo Task A Done! - name: B dependencies: - dependsOn: A # This means Step B depends on Step A script: actions: onRun: command: bash args: ['{{ Task.File.run }}'] embeddedFiles: - name: run type: TEXT data: | #!/bin/env bash set -euo pipefail sleep 1 echo Task B Done!