BatchJobManagerTask interface
指定作业管理器任务的详细信息。 作业管理器任务在创建作业时自动启动。 Batch 服务尝试在作业中的任何其他任务之前计划作业管理器任务。 收缩池时,Batch 服务会尝试保留尽可能长时间运行作业管理器任务的节点(即运行“正常”任务的计算节点在运行作业管理器任务的计算节点之前删除)。 当作业管理器任务失败且需要重启时,系统会尝试以最高优先级计划它。 如果没有空闲的计算节点可用,系统可能会终止池中正在运行的任务之一,并将其返回到队列,以便为作业管理器任务重启腾出空间。 请注意,一个作业中的作业管理器任务不优先于其他作业中的任务。 跨作业,只观察到作业级别优先级。 例如,如果优先级为 0 的作业管理器需要重新启动,则它不会取代优先级 1 作业的任务。 当在节点上触发恢复操作时,Batch 将重试任务。 恢复操作的示例包括(但不限于)在重新启动运行不正常的节点或计算节点因主机故障而消失时。 由于恢复操作而进行的重试与 maxTaskRetryCount 无关,并且不计入 maxTaskRetryCount。 即使 maxTaskRetryCount 为 0,也可能发生由于恢复操作而导致的内部重试。 因此,所有任务都应是幂等的。 这意味着任务需要容忍中断和重启,而不会导致任何损坏或重复数据。 长时间运行的任务的最佳做法是使用某种形式的检查点。
属性
| allow |
作业管理器任务是否可以在特定/低优先级计算节点上运行。 默认值为真。 |
| application |
批处理服务在运行命令行前将部署到计算节点的应用包列表。应用包被下载并部署到共享目录,而非任务工作目录。 因此,如果引用的应用包已经在计算节点上且是最新的,则不会重新下载;使用计算节点上的现有副本。 如果引用的应用包无法安装,例如因为该包已被删除或下载失败,任务即告失败。 |
| 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 |
作业管理器任务运行的容器设置。 如果执行该任务的池设置了containerConfiguration,也必须设置。 如果执行该任务的池没有设置 containerConfiguration ,那么必须不设置。 当指定时,所有位于AZ_BATCH_NODE_ROOT_DIR(节点上Azure Batch目录根)下方的所有目录递归映射到容器中,所有任务环境变量映射到容器中,任务命令行在容器中执行。 容器中AZ_BATCH_NODE_ROOT_DIR外生成的文件可能不会反映到主机磁盘,这意味着批处理文件API无法访问这些文件。 |
| display |
作业管理器任务的显示名称。 它不必是唯一的,可以包含任意 Unicode 字符,长度最多可达 1024。 |
| environment |
作业管理器任务的环境变量设置列表。 |
| id | 一个字符串,唯一标识作业管理器任务。 ID可以包含任意组合的字母数字字符,包括连字符和下划线,且字符数不得超过64个。 |
| kill |
任务管理器任务的完成是否意味着整个任务的完成。 如果成立,当作业管理器任务完成时,批处理服务会标记该任务为完成。 如果此时仍有任务在运行(除了作业释放),这些任务将被终止。 如果为假,作业管理器任务的完成不会影响作业状态。 在这种情况下,你应该使用 onAllTasksComplete 属性来终止作业,或者让客户端或用户明确终止作业。 例如,如果作业管理器创建了一组任务,但之后不再参与任务的执行。 默认值为真。 如果你使用 onAllTasksComplete 和 onTaskFailure 属性来控制作业生命周期,并且只用作业管理器任务创建任务(不用于监控进度),那么将 killJobOnCompletion 设置为 false 非常重要。 |
| output |
批处理服务运行命令行后,将从计算节点上传的文件列表。 对于多实例任务,文件只会从执行主任务的计算节点上传。 |
| required |
任务运行所需的调度时隙数。 默认值为 1。 只有当节点有足够的空闲调度槽时,任务才能被调度到计算节点上运行。 对于多实例任务,该属性不被支持,也不应指定。 |
| resource |
Batch 服务在运行命令行之前将下载到计算节点的文件列表。 此元素下列出的文件位于任务的工作目录中。 资源文件列表的最大大小。 超过最大大小时,请求将失败,响应错误代码将为 RequestEntityTooLarge。 如果发生这种情况,则必须减小 ResourceFiles 的集合大小。 这可以使用 .zip 文件、应用程序包或 Docker 容器来实现。 |
| run |
作业管理器任务是否需要独占其运行的计算节点。 如果属实,只要作业管理器运行,其他任务就不会在同一节点上运行。 如果为假,其他任务可以在计算节点上与作业管理器同时运行。 作业管理器任务通常计入计算节点的并发任务限制,因此只有当计算节点允许多个并发任务时才相关。 默认值为真。 |
| user |
作业管理器任务运行的用户身份。 如果省略,任务将作为任务独一无二的非管理员用户运行。 |
属性详细信息
allowLowPriorityNode
作业管理器任务是否可以在特定/低优先级计算节点上运行。 默认值为真。
allowLowPriorityNode?: boolean
属性值
boolean
applicationPackageReferences
批处理服务在运行命令行前将部署到计算节点的应用包列表。应用包被下载并部署到共享目录,而非任务工作目录。 因此,如果引用的应用包已经在计算节点上且是最新的,则不会重新下载;使用计算节点上的现有副本。 如果引用的应用包无法安装,例如因为该包已被删除或下载失败,任务即告失败。
applicationPackageReferences?: BatchApplicationPackageReference[]
属性值
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
作业管理器任务运行的容器设置。 如果执行该任务的池设置了containerConfiguration,也必须设置。 如果执行该任务的池没有设置 containerConfiguration ,那么必须不设置。 当指定时,所有位于AZ_BATCH_NODE_ROOT_DIR(节点上Azure Batch目录根)下方的所有目录递归映射到容器中,所有任务环境变量映射到容器中,任务命令行在容器中执行。 容器中AZ_BATCH_NODE_ROOT_DIR外生成的文件可能不会反映到主机磁盘,这意味着批处理文件API无法访问这些文件。
containerSettings?: BatchTaskContainerSettings
属性值
displayName
作业管理器任务的显示名称。 它不必是唯一的,可以包含任意 Unicode 字符,长度最多可达 1024。
displayName?: string
属性值
string
environmentSettings
id
一个字符串,唯一标识作业管理器任务。 ID可以包含任意组合的字母数字字符,包括连字符和下划线,且字符数不得超过64个。
id: string
属性值
string
killJobOnCompletion
任务管理器任务的完成是否意味着整个任务的完成。 如果成立,当作业管理器任务完成时,批处理服务会标记该任务为完成。 如果此时仍有任务在运行(除了作业释放),这些任务将被终止。 如果为假,作业管理器任务的完成不会影响作业状态。 在这种情况下,你应该使用 onAllTasksComplete 属性来终止作业,或者让客户端或用户明确终止作业。 例如,如果作业管理器创建了一组任务,但之后不再参与任务的执行。 默认值为真。 如果你使用 onAllTasksComplete 和 onTaskFailure 属性来控制作业生命周期,并且只用作业管理器任务创建任务(不用于监控进度),那么将 killJobOnCompletion 设置为 false 非常重要。
killJobOnCompletion?: boolean
属性值
boolean
outputFiles
requiredSlots
任务运行所需的调度时隙数。 默认值为 1。 只有当节点有足够的空闲调度槽时,任务才能被调度到计算节点上运行。 对于多实例任务,该属性不被支持,也不应指定。
requiredSlots?: number
属性值
number
resourceFiles
Batch 服务在运行命令行之前将下载到计算节点的文件列表。 此元素下列出的文件位于任务的工作目录中。 资源文件列表的最大大小。 超过最大大小时,请求将失败,响应错误代码将为 RequestEntityTooLarge。 如果发生这种情况,则必须减小 ResourceFiles 的集合大小。 这可以使用 .zip 文件、应用程序包或 Docker 容器来实现。
resourceFiles?: ResourceFile[]
属性值
runExclusive
作业管理器任务是否需要独占其运行的计算节点。 如果属实,只要作业管理器运行,其他任务就不会在同一节点上运行。 如果为假,其他任务可以在计算节点上与作业管理器同时运行。 作业管理器任务通常计入计算节点的并发任务限制,因此只有当计算节点允许多个并发任务时才相关。 默认值为真。
runExclusive?: boolean
属性值
boolean