本文档介绍了作业的执行过程和创建选项。 借助批量作业,您可以在 Google Cloud 控制台上运行批处理工作负载 Google Cloud了解作业的组成部分和 使用 Batch 的前提条件,请参阅 Batch 使用入门。
作业创建和执行的工作原理
要使用 Batch,您需要创建一个作业,指定 您的工作负载及其要求 并自动运行
详细介绍了作业创建和执行的工作原理 :
作业生命周期
本部分介绍作业的生命周期及其从创建开始所执行的任务 删除。
对于要在 Batch 上运行的每个工作负载,您需要完成 以下基本流程:
- 创建作业:通过指定 作业的可运行对象、任务和任何其他要求有关 创建作业的步骤 本文档中的作业创建选项部分。
- 对作业进行监控和问题排查:完成作业创建后, 自动排队、安排时间,并在指定的 资源。您可以查看已创建作业或其任何任务的详细信息, 查看当前状态。如果需要,您可以取消作业 (预览)停止或防止 停止运行在作业运行或完成后,您还可以监控 并使用日志分析作业如果作业失败,您可以进行问题排查 使用任何错误消息、状态事件或日志来诊断问题 然后再重新创建作业
- 删除或导出作业:系统会自动创建作业的日志 根据 Cloud Logging 保留政策保留和删除。 作业的其他信息仍可在 Batch 中使用。 直至您或 Google Cloud 将其删除 Google Cloud 会在作业运行完成 60 天后自动删除作业。 在此之前,您可以根据需要自行删除作业,或者 可以在作业被删除前导出其信息。
创建作业后,它将经历以下状态:
- 已加入队列 (
QUEUED
):作业请求已被接受并正在等待 在队列中。该作业将保留在队列中,直到所需的资源为止 且之前的作业已经过评估。 - 已安排 (
SCHEDULED
):已从队列中选择作业 开始运行,系统正在分配资源。 正在运行 (
RUNNING
):已为作业创建资源 其任务就可以开始运行了作业运行时,会逐步完成 以下状态:
- 待处理 (
PENDING
):任务正在等待虚拟机在其上运行。 - 已分配 (
ASSIGNED
):已为任务分配一个虚拟机以在其上运行。 - 正在运行 (
RUNNING
):任务正在虚拟机上运行。 任务完成时处于以下状态之一:
成功 (
SUCCEEDED
):任务成功,因为 其可运行对象满足下列条件之一:- 可运行对象成功(返回一个 退出代码 值为零)。
- 可运行状态失败(返回非零退出代码),但属于非关键可运行状态(您已启用
可运行对象的
ignoreExitStatus
字段)。 - Runnable 没有完成,但属于后台 Runnable(您
启用了可运行对象的
background
字段)。
失败 (
FAILED
):任务失败并停止运行,因为 至少有一个可运行项不符合上述条件。
- 待处理 (
作业会在以下状态之一完成:
作业排队和调度
一般来说,如果存在此类任务, 且只需要一些通用资源。对于示例作业 通常非常小 并使用最少的资源 几分钟。
具体而言,作业完成排队和调度所需的时间各有不同 在不同时间、不同工作岗位,具体取决于以下因素:
作业资源可用性: 在允许的 位置。
首先,如果您恰好指定了任何资源 那么作业将失败,并且 可用区可用性错误。
其次,如果作业存在任何延迟, 与当前需求相比,所需的资源容量偏低 资源可用性错误。 因此,如果您所需的资源较少,则您的作业可能会更快运行。 不会限制运行作业 同一区域的多个可用区中
有关作业资源的更多信息,请参阅 Job execution(作业执行): 本文档。如需详细了解 可以为 Batch 作业及其资源指定的值,请参阅 地点页面。
作业优先级:作业相对于 项目中的其他作业。
您可以视需要指定作业的优先级,方法是将 gcloud CLI 的
--priority
标志 或priority
JSON 字段。 您可以将作业的优先级定义为0
(最低优先级)和99
(最高优先级)。将较高值 优先级有助于让作业早于项目中优先级较低的作业运行。如果不配置作业的优先级,则默认使用 优先级最低,
0
。如果两个已加入队列的作业具有相同的优先级,则该作业 最先创建的提案具有较高的优先级配额和限制:您的项目拥有的阈值 Google Cloud 资源和请求。
如果作业超出上限或项目配额,便无法运行 所需的资源或请求出现这种情况时 Batch 可能会延迟作业并在稍后重试,或者 失败并显示相关错误。
为防止作业出现延迟和错误,您可以创建 遵守所有相关限制,并确保您的项目具有足够的 相关配额如需了解详情,请参阅 批量配额和限制。
作业执行
执行作业所需的时间可能会因任务调度而异 以及作业的资源
任务调度
作业运行时,会根据
时间安排政策 (schedulingPolicy
) 字段
这允许您指定以下选项之一:
- 尽快 (
AS_SOON_AS_POSSIBLE
)(默认): 任务在资源可用后立即运行,并且可以并行运行。 一次运行的任务数量取决于每个虚拟机的并行任务数量 作业资源和其他配置选项所允许的 请参阅本文档的作业资源部分。 - 顺序 (
IN_ORDER
):任务以递增的方式一次运行一个。 索引顺序。
作业资源
每个批量作业都在区域级代管式实例组 (MIG) 上运行, 它是指由一个或多个 Compute Engine 虚拟机 (VM) 实例,分别位于 包含的区域每个虚拟机都有专用硬件 CPU 核心(具体是指虚拟 CPU (vCPU)) 和内存,它们会影响应用的性能 以及启动磁盘,后者用于存储 系统 (OS) 映像以及运行作业的说明。
在作业运行时,Batch 会自动创建并 删除符合您的规范的资源。 创建作业时,您可以通过指定以下内容来配置其资源:
您必须指定计算资源(vCPU、内存和 (如果需要)额外的启动磁盘存储空间 - 运行每项任务都需要 除非默认值足够有关详情,请参阅 每个任务的计算资源 (
computeResource
) 字段 和子字段。或者,您还可以指定要使用的虚拟机类型 例如 GPU 和存储卷如果您 指定这些选项,Batch 会选择 虚拟机,不添加任何其他资源。有关详情,请参阅 虚拟机实例资源 (
instances[]
) 字段 和子字段。
可同时运行的虚拟机数量和任务数量
根据任务调度和
指定的硬件要求如果指定某个作业的任务运行
IN_ORDER
时,该作业有一个虚拟机,并且一次仅运行一个任务。否则
如果作业的任务运行 AS_SOON_AS_POSSIBLE
,则可以估算
虚拟机数量和同时执行的任务数量的计算公式如下:
\[{vmsPerJob}=\frac{taskCount}{parallelTasksPerVm}\]
此公式具有以下值:
- \({vmsPerJob}\):作业的最大虚拟机数量。实际的虚拟机数量 可能会小于该值 - 例如,如果 Batch 希望使用更少的资源更快地运行作业 而不必等待更多资源该值还受 每个作业的并发虚拟机数限制。
- \({taskCount}\):作业的任务总数,由您定义
使用任务计数 (
taskCount
) 字段。 \({parallelTasksPerVM}\):可以在虚拟机上运行的任务数上限 。
该值由以下所有条件决定 条件:
最小值为 1 个任务。
最大值为 20 个任务中的较小者,以及值(若已定义) 每个作业的并行任务数上限 (
parallelism
) 字段中填写的值。如果 每个虚拟机的并行任务数上限 (
taskCountPerNode
) 字段 系统就会使用该值否则,如果未定义
taskCountPerNode
,则批处理 会除以 计算资源(具体来说就是 vCPU)的数量 每项任务所需的资源:\[{parallelTasksPerVm}=\frac{vcpusPerVm}{vcpusPerTask}\]
此公式具有以下值:
\({vcpusPerVm}\):每个虚拟机的 vCPU 总数 取决于作业虚拟机的机器类型
\({vcpusPerTask}\):每个任务的 vCPU 数量, 是通过将 每个任务的 vCPU 数量 (
cpuMilli
) 字段。
作业创建选项
创建和运行基本作业一文介绍了 包括如何使用脚本或 以及如何配置预定义和自定义环境变量。
了解了创造就业机会的基础知识后,不妨考虑 使用以下一个或多个其他配置选项的作业:
控制对作业的访问权限:
使用自定义服务账号控制对作业的访问权限 介绍了如何指定作业的服务账号,该账号会影响 作业的虚拟机可以访问的资源和应用。如果您 指定自定义服务账号,则作业默认使用 Compute Engine 默认服务账号。
网络概览 简要介绍何时以及如何自定义 作业的网络配置,包括指定 阻止外部连接 使用 VPC Service Controls 保护数据和资源。
使用 Secret Manager 保护敏感数据 介绍了如何安全地定义敏感数据,如自定义 环境变量和登录凭据 用于指定加密信息的 Secret Manager Secret 。
为作业配置其他选项:
使用 MPI 库配置任务通信 介绍了如何使用相互依赖的任务来配置作业,这些任务可以 通过消息传递接口跨不同虚拟机相互传递 (MPI) 库。MPI 的常见应用场景是紧密耦合, 高性能计算 (HPC) 工作负载。
自定义运行作业的资源:
使用虚拟机实例模板定义作业资源 介绍了如何指定 Compute Engine 虚拟机模板 您需要为其指定资源
使用 GPU 执行作业中介绍了如何定义 使用一个或多个图形处理单元 (GPU) 的作业。常见用途 使用 GPU 的作业包括密集型数据处理或机器 机器学习 (ML) 工作负载。
将存储卷用于作业说明 如何定义可以访问一个或多个外部存储卷的作业。 存储选项包括新的或现有的永久性磁盘、新的本地 SSD 和现有的网络文件系统 (NFS),例如 Filestore 文件共享。
虚拟机操作系统环境概览 简要介绍何时以及如何自定义 作业的虚拟机操作系统 (OS) 环境,包括作业的 虚拟机操作系统映像和启动磁盘。
优化作业的各个方面:
改善监控和分析:
写入任务日志介绍了如何 配置作业的可运行对象以写入任务日志。 通过写入任务日志,您可以发掘自定义信息 有助于简化作业 来分析和排查问题
配置自定义状态事件 说明了如何为作业的 Runnable通过自定义状态事件,您可以 触发这些事件 查看作业的状态事件历史记录, 以便更轻松地分析作业和进行问题排查。
启用状态通知 说明了如何配置作业以向 Pub/Sub 发送 有关其状态的通知,您可以选择将其存储 在 BigQuery 表中执行查询和查询操作。 在阅读本文档之前,请将项目配置为 使用 Pub/Sub 通知和 BigQuery 监控作业状态 。
启用 Ops Agent 指标 说明了如何配置作业以自动安装 Ops Agent 。Ops Agent 会收集有关 作业资源的性能和利用率。 如需详细了解如何查看和使用资源指标, 请参阅 通过查看指标监控和优化作业资源。
自动重试任务 解释了在全部或 指定的失败。自动重试有助于减少 问题排查和整体运行时间 (出现临时错误的作业)。 例如,对在 Spot 虚拟机,提供大幅折扣, 并非始终可用,并且可以随时被抢占。
共置虚拟机以缩短延迟时间 解释了如何通过 要求虚拟机物理上彼此靠近。 这种性能优势对于 会频繁地在虚拟机之间进行网络通信, 使用 MPI 库进行通信。
使用虚拟机预留确保资源可用性 解释了如何配置一个作业, 可以在预留的虚拟机上运行使用预留 虚拟机可以帮助您最大限度地缩短作业的调度时间, 防止资源可用性错误,以及 优化成本。
使用映像流式传输 解释了如何通过流式传输容器缩短作业启动时间 Artifact Registry 中的映像
使用其他服务创建和运行作业:
使用 Workflows 编排作业 介绍了如何使用 Workflows 执行作业的 按您使用 Workflows 语法。
使用 Nextflow 编排作业介绍了如何 通过 Nextflow 流水线, 可用于编排生物信息学工作流。
使用 dsub 编排作业介绍了如何 通过
dsub
流水线,可用于编排批处理工作流 Google Cloud 服务使用 Terraform 和 Cloud Scheduler 创建和运行批处理作业 介绍了如何将 Batch 作业整合到 Terraform 中。 Terraform 你可以通过指定首选提供商来预配和管理 这些状态可被视为代码并存储在 GitHub 等版本控制系统