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目录根)下方的所有目录递归映射到容器中,所有任务环境变量映射到容器中,任务命令行在容器中执行。 容器中AZ_BATCH_NODE_ROOT_DIR外生成的文件可能不会反映到主机磁盘,这意味着批处理文件API无法访问这些文件。 |
| environment |
作业准备任务的环境变量设置列表。 |
| id | 一个字符串,唯一标识作业中的作业准备任务。 ID可以包含任意组合的字母数字字符,包括连字符和下划线,且字符数不得超过64个。 如果你没有指定该属性,批处理服务会默认分配一个“作业准备”值。 作业中没有其他任务可以与作业准备任务拥有相同的ID。 如果你尝试提交一个带有相同ID的任务,批处理服务会以错误代码TaskIdSameAsJobPreparationTask拒绝请求;如果你直接调用 REST API,HTTP 状态码是 409(冲突)。 |
| rerun |
批处理服务是否应在计算节点重启后重运行作业准备任务。 如果计算节点被重镜像,或者作业准备任务未完成(例如因为重启发生在任务运行中),作业准备任务总是会重新运行。 因此,你应始终将作业准备任务写成幂零且多次运行时行为正确。 默认值为真。 |
| resource |
Batch 服务在运行命令行之前将下载到计算节点的文件列表。 此元素下列出的文件位于任务的工作目录中。 资源文件列表的最大大小。 超过最大大小时,请求将失败,响应错误代码将为 RequestEntityTooLarge。 如果发生这种情况,则必须减小 ResourceFiles 的集合大小。 这可以使用 .zip 文件、应用程序包或 Docker 容器来实现。 |
| user |
作业准备任务运行的用户身份。 如果省略,任务作为 Windows 计算节点上的任务独有的非管理用户运行,或作为 Linux 计算节点池的非管理用户。 |
| wait |
批处理服务是否应等待作业准备任务成功完成后,再在计算节点调度该作业的其他任务。 如果一个任务准备任务以出口代码0退出,则该任务成功完成。 如果为真且作业准备任务在某节点失败,批处理服务会重试任务,直到其最大重试次数(如约束元素中指定)。 如果任务在所有重试后仍未成功完成,那么批处理服务将不会将该作业的任务调度到节点。 节点保持活跃,并有资格执行其他作业的任务。 如果错误,批处理服务不会等待作业准备任务完成。 在这种情况下,作业的其他任务可以在作业准备任务仍在运行时开始在计算节点上执行;即使作业准备任务失败,新的任务仍会在计算节点上继续调度。 默认值为真。 |
属性详细信息
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目录根)下方的所有目录递归映射到容器中,所有任务环境变量映射到容器中,任务命令行在容器中执行。 容器中AZ_BATCH_NODE_ROOT_DIR外生成的文件可能不会反映到主机磁盘,这意味着批处理文件API无法访问这些文件。
containerSettings?: BatchTaskContainerSettings
属性值
environmentSettings
id
一个字符串,唯一标识作业中的作业准备任务。 ID可以包含任意组合的字母数字字符,包括连字符和下划线,且字符数不得超过64个。 如果你没有指定该属性,批处理服务会默认分配一个“作业准备”值。 作业中没有其他任务可以与作业准备任务拥有相同的ID。 如果你尝试提交一个带有相同ID的任务,批处理服务会以错误代码TaskIdSameAsJobPreparationTask拒绝请求;如果你直接调用 REST API,HTTP 状态码是 409(冲突)。
id?: string
属性值
string
rerunOnNodeRebootAfterSuccess
批处理服务是否应在计算节点重启后重运行作业准备任务。 如果计算节点被重镜像,或者作业准备任务未完成(例如因为重启发生在任务运行中),作业准备任务总是会重新运行。 因此,你应始终将作业准备任务写成幂零且多次运行时行为正确。 默认值为真。
rerunOnNodeRebootAfterSuccess?: boolean
属性值
boolean
resourceFiles
Batch 服务在运行命令行之前将下载到计算节点的文件列表。 此元素下列出的文件位于任务的工作目录中。 资源文件列表的最大大小。 超过最大大小时,请求将失败,响应错误代码将为 RequestEntityTooLarge。 如果发生这种情况,则必须减小 ResourceFiles 的集合大小。 这可以使用 .zip 文件、应用程序包或 Docker 容器来实现。
resourceFiles?: ResourceFile[]
属性值
userIdentity
作业准备任务运行的用户身份。 如果省略,任务作为 Windows 计算节点上的任务独有的非管理用户运行,或作为 Linux 计算节点池的非管理用户。
userIdentity?: UserIdentity
属性值
waitForSuccess
批处理服务是否应等待作业准备任务成功完成后,再在计算节点调度该作业的其他任务。 如果一个任务准备任务以出口代码0退出,则该任务成功完成。 如果为真且作业准备任务在某节点失败,批处理服务会重试任务,直到其最大重试次数(如约束元素中指定)。 如果任务在所有重试后仍未成功完成,那么批处理服务将不会将该作业的任务调度到节点。 节点保持活跃,并有资格执行其他作业的任务。 如果错误,批处理服务不会等待作业准备任务完成。 在这种情况下,作业的其他任务可以在作业准备任务仍在运行时开始在计算节点上执行;即使作业准备任务失败,新的任务仍会在计算节点上继续调度。 默认值为真。
waitForSuccess?: boolean
属性值
boolean