BatchJobPreparationTask interface
要在任何给定计算节点上作业的任何任务之前运行的作业准备任务。 可以使用作业准备来准备节点以运行作业的任务。 作业准备中通常执行的活动包括:下载作业中所有任务使用的常见资源文件。 作业准备任务可以将这些常见资源文件下载到节点上的共享位置。 (AZ_BATCH_NODE_ROOT_DIR\shared),或启动节点上的本地服务,以便该作业的所有任务都可以与其通信。 如果作业准备任务失败(即退出代码 0 之前耗尽其重试计数),Batch 将不会在节点上运行此作业的任务。 在重新映像之前,计算节点仍无法运行此作业的任务。 计算节点保持活动状态,可用于其他作业。 作业准备任务可以在同一节点上多次运行。 因此,应编写作业准备任务来处理重新执行。 如果重新启动节点,则作业准备任务在计划作业的任何其他任务之前,在计算节点上再次运行,如果 rerunOnNodeRebootAfterSuccess 为 true,或者作业准备任务以前未完成。 如果重新映像节点,则会在计划作业的任何任务之前再次运行作业准备任务。 当在节点上触发恢复操作时,Batch 将重试任务。 恢复操作的示例包括(但不限于)在重新启动运行不正常的节点或计算节点因主机故障而消失时。 由于恢复操作而进行的重试与 maxTaskRetryCount 无关,并且不计入 maxTaskRetryCount。 即使 maxTaskRetryCount 为 0,也可能发生由于恢复操作而导致的内部重试。 因此,所有任务都应是幂等的。 这意味着任务需要容忍中断和重启,而不会导致任何损坏或重复数据。 长时间运行的任务的最佳做法是使用某种形式的检查点。
属性
| command |
作业准备任务的命令行。 命令行未在 shell 下运行,因此不能利用 shell 功能(如环境变量扩展)。 如果要利用这些功能,则应在命令行中调用 shell,例如在 Windows 中使用“cmd /c MyCommand”或在 Linux 中使用“/bin/sh -c MyCommand”。 如果命令行引用文件路径,则应使用相对路径(相对于任务工作目录),或使用 Batch 提供的环境变量(https://learn.microsoft.com/azure/batch/batch-compute-node-environment-variables)。 |
| constraints | 适用于作业准备任务的约束。 |
| container |
运行作业准备任务的容器的设置。 指定此项后,AZ_BATCH_NODE_ROOT_DIR(节点上的 Azure Batch 目录的根目录)以递归方式映射到容器中,所有任务环境变量都映射到容器中,并在容器中执行 Task 命令行。 在AZ_BATCH_NODE_ROOT_DIR外部容器中生成的文件可能不会反映在主机磁盘上,这意味着 Batch 文件 API 将无法访问这些文件。 |
| environment |
作业准备任务的环境变量设置列表。 |
| id | 一个字符串,用于唯一标识作业中的作业准备任务。 ID 可以包含字母数字字符的任意组合,包括连字符和下划线,不能包含超过 64 个字符。 如果未指定此属性,Batch 服务会分配默认值“jobpreparation”。 作业中的其他任务不能具有与作业准备任务相同的 ID。 如果尝试提交具有相同 ID 的任务,Batch 服务会拒绝错误代码为 TaskIdSameAsJobPreparationTask 的请求;如果直接调用 REST API,则 HTTP 状态代码为 409(冲突)。 |
| rerun |
批处理服务是否应在计算节点重新启动后重新运行作业准备任务。 如果重新映像计算节点,或者作业准备任务未完成(例如,因为任务正在运行时重新启动),则始终重新运行作业准备任务。 因此,应始终编写作业准备任务来幂等,并在多次运行时正常运行。 默认值为 true。 |
| resource |
Batch 服务在运行命令行之前将下载到计算节点的文件列表。 此元素下列出的文件位于任务的工作目录中。 资源文件列表的最大大小。 超过最大大小时,请求将失败,响应错误代码将为 RequestEntityTooLarge。 如果发生这种情况,则必须减小 ResourceFiles 的集合大小。 这可以使用 .zip 文件、应用程序包或 Docker 容器来实现。 |
| user |
运行作业准备任务的用户标识。 如果省略,则任务作为 Windows 计算节点上任务唯一的非管理用户运行,或者作为 Linux 计算节点上池唯一的非管理用户运行。 |
| wait |
Batch 服务是否应在计算节点上计划作业的任何其他任务之前等待作业准备任务成功完成。 如果作业准备任务退出并退出代码 0,则作业准备任务已成功完成。 如果 True 且作业准备任务在节点上失败,Batch 服务将重试作业准备任务的最大重试计数(如约束元素中指定的)。 如果所有重试后任务仍未成功完成,Batch 服务将不会将作业的任务计划到节点。 节点保持活动状态,并且有资格运行其他作业的任务。 如果为 false,Batch 服务将不会等待作业准备任务完成。 在这种情况下,作业的其他任务可以在作业准备任务仍在运行时开始在计算节点上执行;即使作业准备任务失败,也会在计算节点上继续计划新任务。 默认值为 true。 |
属性详细信息
commandLine
作业准备任务的命令行。 命令行未在 shell 下运行,因此不能利用 shell 功能(如环境变量扩展)。 如果要利用这些功能,则应在命令行中调用 shell,例如在 Windows 中使用“cmd /c MyCommand”或在 Linux 中使用“/bin/sh -c MyCommand”。 如果命令行引用文件路径,则应使用相对路径(相对于任务工作目录),或使用 Batch 提供的环境变量(https://learn.microsoft.com/azure/batch/batch-compute-node-environment-variables)。
commandLine: string
属性值
string
constraints
containerSettings
运行作业准备任务的容器的设置。 指定此项后,AZ_BATCH_NODE_ROOT_DIR(节点上的 Azure Batch 目录的根目录)以递归方式映射到容器中,所有任务环境变量都映射到容器中,并在容器中执行 Task 命令行。 在AZ_BATCH_NODE_ROOT_DIR外部容器中生成的文件可能不会反映在主机磁盘上,这意味着 Batch 文件 API 将无法访问这些文件。
containerSettings?: BatchTaskContainerSettings
属性值
environmentSettings
id
一个字符串,用于唯一标识作业中的作业准备任务。 ID 可以包含字母数字字符的任意组合,包括连字符和下划线,不能包含超过 64 个字符。 如果未指定此属性,Batch 服务会分配默认值“jobpreparation”。 作业中的其他任务不能具有与作业准备任务相同的 ID。 如果尝试提交具有相同 ID 的任务,Batch 服务会拒绝错误代码为 TaskIdSameAsJobPreparationTask 的请求;如果直接调用 REST API,则 HTTP 状态代码为 409(冲突)。
id?: string
属性值
string
rerunOnNodeRebootAfterSuccess
批处理服务是否应在计算节点重新启动后重新运行作业准备任务。 如果重新映像计算节点,或者作业准备任务未完成(例如,因为任务正在运行时重新启动),则始终重新运行作业准备任务。 因此,应始终编写作业准备任务来幂等,并在多次运行时正常运行。 默认值为 true。
rerunOnNodeRebootAfterSuccess?: boolean
属性值
boolean
resourceFiles
Batch 服务在运行命令行之前将下载到计算节点的文件列表。 此元素下列出的文件位于任务的工作目录中。 资源文件列表的最大大小。 超过最大大小时,请求将失败,响应错误代码将为 RequestEntityTooLarge。 如果发生这种情况,则必须减小 ResourceFiles 的集合大小。 这可以使用 .zip 文件、应用程序包或 Docker 容器来实现。
resourceFiles?: ResourceFile[]
属性值
userIdentity
运行作业准备任务的用户标识。 如果省略,则任务作为 Windows 计算节点上任务唯一的非管理用户运行,或者作为 Linux 计算节点上池唯一的非管理用户运行。
userIdentity?: UserIdentity
属性值
waitForSuccess
Batch 服务是否应在计算节点上计划作业的任何其他任务之前等待作业准备任务成功完成。 如果作业准备任务退出并退出代码 0,则作业准备任务已成功完成。 如果 True 且作业准备任务在节点上失败,Batch 服务将重试作业准备任务的最大重试计数(如约束元素中指定的)。 如果所有重试后任务仍未成功完成,Batch 服务将不会将作业的任务计划到节点。 节点保持活动状态,并且有资格运行其他作业的任务。 如果为 false,Batch 服务将不会等待作业准备任务完成。 在这种情况下,作业的其他任务可以在作业准备任务仍在运行时开始在计算节点上执行;即使作业准备任务失败,也会在计算节点上继续计划新任务。 默认值为 true。
waitForSuccess?: boolean
属性值
boolean