从 Cloud Life Sciences 迁移到批处理

本页介绍了如何从 Cloud Life Sciences 迁移到 Batch。

2023 年 7 月 17 日, Google Cloud 宣布,之前处于 Beta 版阶段的 Cloud Life Sciences 已被弃用。 Google Cloud 2025 年 7 月 8 日之后,此服务将不再可用。不过,Batch 现已正式发布,是全面的后继产品,支持 Cloud Life Sciences 的所有用例。

详细了解 BatchCloud Life Sciences产品发布阶段

Cloud Life Sciences 与批处理

从 Cloud Life Sciences 迁移到 Batch 主要涉及了解如何将 Batch 用于您目前通过运行 Cloud Life Sciences 流水线执行的工作负载。

如需了解如何在批处理作业中执行 Cloud Life Sciences 工作负载,请参阅以下所有部分:

概览

Cloud Life Sciences 流水线用于描述要执行的一组操作(容器)以及执行容器的环境。

批处理作业用于描述一个或多个任务的数组以及执行这些任务的环境。您可以将作业的工作负载定义为要执行的一个或多个可运行对象(容器和/或脚本)序列。作业的每个任务都代表其可运行对象序列的一次执行。

Cloud Life Sciences 流水线可以表示为单任务批处理作业。

例如,以下示例描述了一个简单的 Cloud Life Sciences 流水线及其等效的批处理作业:

Cloud Life Sciences 流水线 批量作业
  {
    "actions": [
      {
        "imageUri": "bash",
        "commands": [
          "-c",
          "echo Hello, world!"
        ]
      }
    ]
  }
  
    {
      "taskGroups" : [{
        "taskSpec" : {
          "runnables" : [{
            "container":{
              "imageUri": "bash",
              "commands": [
                "-c",
                "echo Hello, world!"
              ]
            }
          }]
        }
      }]
    }
    

多任务批处理作业类似于复制的 Cloud Life Sciences 数据流水线。

与 Cloud Life Sciences 不同,Batch 允许您自动安排工作负载的多次执行。您可以通过定义任务数量来指明要为作业执行可运行序列的次数。如果作业包含多个任务,您可以通过在可运行对象中引用任务的索引来指定您希望每次执行的差异。此外,您还可以为作业的任务配置相对时间表,例如,允许多个任务并行运行还是要求任务按顺序逐个运行。Batch 会管理作业的任务调度:当某个任务完成时,作业会自动启动下一个任务(如果有)。

例如,请参阅以下批处理作业。此示例作业有 100 个任务在 10 个 Compute Engine 虚拟机 (VM) 实例上执行,因此在任何给定时间,都有大约 10 个任务在并行运行。此示例作业中的每个任务只会执行一个可运行项:一个脚本,用于输出一条消息和任务的索引(由 BATCH_TASK_INDEX 预定义环境变量定义)。

{
  "taskGroups" : [{
    "taskSpec" : {
      "runnables" : [{
        "script":{
          "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}."
        }
      }]
    },
    "taskCount": 100,
    "parallelism": 10
  }]
}

有时,利用批处理的内置调度功能,可以简化涉及创建和监控多个类似 Cloud Life Sciences 流水线的工作流。

基本操作

本部分介绍了 Cloud Life Sciences 与批处理的基本操作。

下表总结了 Cloud Life Sciences 和批处理的基本操作选项。

基本操作 Cloud Life Sciences 选项 批量处理选项
执行工作负载。
  • 运行流水线。
  • 创建和运行作业。
查看您的所有工作负载。
  • 列出长时间运行的操作。
  • 查看作业列表。
查看工作负载的详细信息和状态。
  • 获取长时间运行的操作的详细信息。
  • 轮询长时间运行的操作。
  • 查看作业的详细信息。
  • 查看作业的任务列表。
  • 查看任务的详细信息。
停止并移除工作负载。
  • 取消长时间运行的操作。
  • 删除(并取消)作业。
  • 查看作业删除请求的状态。

Cloud Life Sciences 和批处理的基本操作存在一些关键区别。

首先,长时间运行的操作资源在批处理中的作用与在 Cloud Life Sciences 中不同。Cloud Life Sciences 中的长时间运行的操作资源 (LRO) 是用于列出和查看数据流的主要资源。不过,批处理和其他 API 中的长时间运行的操作资源 Google Cloud 仅用于监控需要很长时间才能完成的请求的状态。具体而言,在批处理中,唯一会返回长时间运行的操作资源的请求是删除作业。如需详细了解批处理的长时间运行操作资源,请参阅 projects.locations.operations REST 资源的批处理 API 参考文档。与使用长时间运行的操作资源不同,您可以查看和删除适用于工作负载的作业资源。

其次,在批处理中查看工作负载的详细信息涉及的操作与 Cloud Life Sciences 不同。您可以查看作业,了解其详细信息和状态。不过,作业的每个任务也都有自己的详细信息和状态,您可以通过查看作业的任务列表和任务详情来查看这些信息。

为帮助您进一步了解 Cloud Life Sciences 与批处理的基本操作,以下部分提供了一些基本操作的 Google Cloud CLI 命令和 API 请求路径示例。

gcloud CLI 命令示例

对于 gcloud CLI,Cloud Life Sciences 命令以 gcloud beta lifesciences 开头,批处理命令以 gcloud batch 开头。例如,请参阅以下 gcloud CLI 命令。

  • Cloud Life Sciences gcloud CLI 命令示例:

    • 运行流水线:

      gcloud beta lifesciences pipelines run \
        --project=PROJECT_ID \
        --regions=LOCATION \
        --pipeline-file=JSON_CONFIGURATION_FILE
      
    • 获取长时间运行的操作的详细信息:

      gcloud beta lifesciences operations describe OPERATION_ID
      

    替换以下内容:

    • PROJECT_ID:您的项目的项目 ID
    • LOCATION:流水线的位置。
    • JSON_CONFIGURATION_FILE:流水线的 JSON 配置文件。
    • OPERATION_ID:长时间运行的操作的标识符,由运行流水线的请求返回。
  • 批量 gcloud CLI 命令示例:

    • 创建和运行作业:

      gcloud batch jobs submit JOB_NAME \
        --project=PROJECT_ID \
        --location=LOCATION \
        --config=JSON_CONFIGURATION_FILE
      
    • 查看作业的详细信息:

      gcloud batch jobs describe JOB_NAME \
        --project=PROJECT_ID \
        --location=LOCATION \
      
    • 查看作业的任务列表:

      ​​gcloud batch tasks list \
        --project=PROJECT_ID \
        --location=LOCATION \
        --job=JOB_NAME
      
    • 查看任务的详细信息:

      gcloud batch tasks describe TASK_INDEX \
        --project=PROJECT_ID \
        --location=LOCATION \
        --job=JOB_NAME \
        --task_group=TASK_GROUP
      
    • 删除(并取消)作业:

      gcloud batch jobs delete JOB_NAME \
        --project=PROJECT_ID \
        --location=LOCATION
      

    替换以下内容:

    • JOB_NAME:作业的名称。
    • PROJECT_ID:您的项目的项目 ID
    • LOCATION:作业的位置
    • JSON_CONFIGURATION_FILE:包含作业配置详细信息的 JSON 文件的路径。
    • TASK_INDEX:您要查看详细信息的任务的编号。在任务组中,第一个任务的任务索引从 0 开始,每个额外的任务都会使任务索引递增 1。例如,包含四个任务的任务组的索引为 0123
    • TASK_GROUP_NAME:您要查看其详细信息的任务组的名称。该值必须设置为 group0

API 请求路径示例

对于 API,Cloud Life Sciences 使用 lifesciences.googleapis.com 请求路径,而批处理使用 batch.googleapis.com 请求路径。例如,请参阅以下 API 请求路径。与 Cloud Life Sciences 不同,批处理没有 RPC API,只有 REST API。

  • Cloud Life Sciences API 请求路径示例:

    • 运行流水线:

      POST https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/pipelines:run
      
    • 获取长时间运行的操作的详细信息:

      GET https://lifesciences.googleapis.com/v2beta/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
      

    替换以下内容:

    • PROJECT_ID:您的项目的项目 ID
    • LOCATION:流水线的位置。
    • OPERATION_ID:长时间运行的操作的标识符,由运行流水线的请求返回。
  • 批量 API 请求路径示例:

    • 创建和运行作业:

      POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
      
    • 查看作业的详细信息:

      GET https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs/JOB_NAME
      
    • 查看作业的任务列表:

      GET https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs/JOB_NAME/taskGroups/TASK_GROUP/tasks
      
    • 删除作业

      DELETE https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs/JOB_NAME
      
    • 查看作业删除请求的状态:

      GET https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
      

    替换以下内容:

    • PROJECT_ID:您的项目的项目 ID
    • LOCATION:作业的位置
    • JOB_NAME:作业的名称。
    • TASK_GROUP_NAME:您要查看其详细信息的任务组的名称。该值必须设置为 group0
    • OPERATION_ID:长时间运行的操作的标识符,由删除作业的请求返回。

IAM 角色和权限

本部分总结了 Cloud Life Sciences 和批处理的 Identity and Access Management 角色和权限方面的差异。如需详细了解任何角色及其权限,请参阅 IAM 基本角色和预定义角色参考文档

下表介绍了 Cloud Life Sciences 用户所需的预定义角色及其权限。

Cloud Life Sciences 角色 权限

以下任意一项:

  • 项目的 Cloud Life Sciences Admin (roles/lifesciences.admin)
  • 项目的 Cloud Life Sciences Editor (roles/lifesciences.editor)
  • 项目的 Cloud Life Sciences Workflows Runner (roles/lifesciences.workflowsRunner)
  • lifesciences.workflows.run
  • lifesciences.operations.cancel
  • lifesciences.operations.get
  • lifesciences.operations.list
项目的 Cloud Life Sciences Viewer (roles/lifesciences.viewer)
  • lifesciences.operations.get
  • lifesciences.operations.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

下表介绍了一些预定义的批处理角色及其权限。与 Cloud Life Sciences 不同,Batch 要求您向作业授予用户和服务账号的权限。如需详细了解 IAM 要求,请参阅批处理的前提条件

为用户批量分配角色 权限
项目的 Batch Job Editor (roles/batch.jobsEditor)
  • batch.jobs.create
  • batch.jobs.delete
  • batch.jobs.get
  • batch.jobs.list
  • batch.locations.get
  • batch.locations.list
  • batch.operations.get
  • batch.operations.list
  • batch.tasks.get
  • batch.tasks.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
项目的 Batch Job Viewer (roles/batch.jobsViewer) 角色
  • batch.jobs.get
  • batch.jobs.list
  • batch.locations.get
  • batch.locations.list
  • batch.operations.get
  • batch.operations.list
  • batch.tasks.get
  • batch.tasks.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
作业的服务账号的 Service Account User (roles/iam.serviceAccountUser)
  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.get
  • iam.serviceAccounts.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
服务账号的批量角色 权限
项目的 Batch Agent Reporter (roles/batch.agentReporter)
  • batch.states.report

相应功能

下表介绍了 Cloud Life Sciences 的功能、Batch 的等效功能,以及它们之间的详细差异。

每个地图项都由说明及其 JSON 语法表示。在通过 API 访问批处理作业或通过 Google Cloud CLI 指定 JSON 配置文件时,您可以使用 JSON 语法。不过,请注意,您还可以通过其他方法(例如通过 Google Cloud 控制台字段、标志、gcloud CLI 和客户端库)使用批处理功能,这些方法在批处理文档中都有介绍。

如需详细了解每项功能及其 JSON 语法,请参阅以下内容:

Cloud Life Sciences 功能 批量地图项 详细信息
流水线 (pipeline) 作业 (job) 及其任务 (taskGroups[])

Batch 作业由包含一个或多个任务的一组任务组成,每个任务都会执行所有相同的可运行文件。 Cloud Life Sciences 流水线类似于包含一个任务的批处理作业。 不过,Cloud Life Sciences 没有与(包含多个任务的作业)等效的概念,这有点像是重复使用流水线。

如需详细了解作业和任务,请参阅 批处理概览

流水线的操作 (actions[]) 作业的任务的可运行对象 (runnables[])

Cloud Life Sciences 操作描述的是容器,但批处理可运行对象可以包含容器或脚本。

操作的凭据 (credentials)

对于容器可运行文件:

在 Cloud Life Sciences 中,操作的凭据必须是包含用户名和密码键值对的 Cloud Key Management Service 加密字典。

在批处理作业中,容器可运行程序的用户名和密码位于单独的字段中。 您可以使用纯文本或 Secret Manager Secret 的名称指定这两个字段。

对于操作:

针对环境:

可能的环境:

借助 Cloud Life Sciences,您可以为操作指定格式为纯文本或加密字典的环境变量。 在批处理中,这类似于让可运行程序的环境(runnables[] 中的 environment 字段)包含格式为纯文本 (variables) 或加密字典 (encryptedVariables) 的变量。

不过,Batch 还提供了更多用于指定环境变量的选项:

  • 除了将变量指定为纯文本或加密字典之外,您还可以使用 Secret 变量 (secretVariables) 使用 Secret Manager Secret 指定变量。
  • 除了为可运行项指定环境变量之外,您还可以使用 taskSpec 中的 environment 字段为所有可运行项指定环境变量。
  • 除了为每个任务指定具有相同值的环境变量之外,您还可以使用 taskGroups[] 中的 taskEnvironments[] 字段为每个任务指定具有不同值的环境变量。

如需了解详情,请参阅使用环境变量

用于运行流水线的请求的标签(请求正文中的 labels 作业的标签(作业资源中的 labels

与 Cloud Life Sciences 不同,批处理在创建新作业的请求中不包含“labels”字段。对于批处理,最接近的选项是使用仅与作业相关联的标签。

批处理有多个类型的标签(labels 字段),您可以在创建作业时使用这些标签。 如需了解详情,请参阅使用标签整理资源

流水线资源 (resources) 的区域 (regions[]) 和可用区 (zones[]) 作业的资源位置政策 (locationPolicy) 的允许位置 (allowedLocations)

在 Cloud Life Sciences 中,流水线在单个虚拟机上执行,您可以为该虚拟机指定所需的区域和/或可用区。

在批处理中,等效选项是作业的允许位置,您可以将其定义为一个或多个区域或可用区,并指定可在哪里创建作业的虚拟机。 单个 Batch 作业的所有虚拟机都属于一个位于特定区域的托管式实例组 (MIG);不过,各个虚拟机可能位于该区域的不同可用区中。

值得注意的是,指定招聘信息的允许地理位置字段是可选的,因为它与招聘信息的位置信息是分开的。与作业的位置不同,允许的位置不会影响用于创建批处理作业和存储作业元数据的位置。 如需了解详情,请参阅批处理位置

对于流水线的资源 (resources):

对于作业的资源政策 (allocationPolicy):

在 Cloud Life Sciences 中,您可以配置流水线在其上运行的虚拟机。

在批处理中,作业的资源分配政策 (allocationPolicy) 的字段中提供了适用于虚拟机的相同选项:

  • 虚拟机的服务账号、标签和网络配置在其专用字段中定义。
  • 虚拟机字段 (instances) 可直接定义,也可以使用实例模板定义,其中包含机器类型、允许的最小 CPU 平台、启动磁盘和任何其他已连接的磁盘以及任何 GPU 和 GPU 驱动程序的配置选项。

对于操作:

对于可运行对象:

Cloud Life Sciences 中的这些各种便捷标志在批处理作业中是等效的,只不过它们是针对每个可运行对象(可以包含脚本或容器)而非每个操作(容器)指定的。

对于操作:

容器可运行对象的选项 (options)

这些 Cloud Life Sciences 选项(及其他选项)在批处理作业中通过容器可运行项的选项字段 (options) 受支持。将 options 字段设置为您希望批处理附加到 docker run 命令的任何标志,例如 -P --pid mynamespace -p 22:22

对于操作:

无对等项

批量预加载映像,并根据作业的日志政策 (logsPolicy) 以相同的方式处理所有可运行文件的输出。

为操作屏蔽外部网络的选项 (blockExternalNetwork) 用于为容器可运行文件阻止外部网络的选项 (blockExternalNetwork)

用于为操作屏蔽外部网络的 Cloud Life Sciences 选项与用于为容器屏蔽外部网络的批处理选项类似。

批处理还提供许多其他网络选项,例如为作业的所有虚拟机屏蔽外部网络。如需了解详情,请参阅批处理网络概览

操作的挂载 (mounts[]) 所有可运行文件的卷(taskSpec 中的 volumes[])和容器的卷选项(container 中的 volumes[]

在批处理作业中,您可以使用 taskSpec 中的 volumes[] 字段定义作业的卷及其挂载路径。批量将存储卷挂载到作业的虚拟机,并且存储卷可供作业的所有可运行作业(脚本或容器)访问。此挂载是在虚拟机执行任何任务或可运行项之前完成的。

此外,Batch 还支持使用 container 中的 volumes[] 字段在容器可运行项上设置显式卷选项。这些挂载选项会作为 docker run 命令的 --volume 标志的选项传递给容器,例如,[ "/etc:/etc", "/foo:/bar" ] 值会转换为容器上的 docker run --volume /etc:/etc --volume /foo:/bar 命令。

如需详细了解如何将存储卷与 Batch 搭配使用,请参阅创建和运行使用存储卷的作业

用于为操作启用 Cloud Storage FUSE (enableFuse) 的选项 无对等项

批处理会处理您为作业指定的任何存储卷(例如 Cloud Storage 存储分区)的装载。 因此,您无需为批处理启用 Cloud Storage FUSE 等任何挂载工具;不过,您可以选择使用 mountOptions[] 字段为存储卷指定挂载选项。

如需详细了解如何将 Cloud Storage 存储分区与批处理作业搭配使用,请参阅创建和运行使用存储卷的作业

用于运行数据流请求的 Pub/Sub 主题 (pubSubTopic)

作业的通知配置 (notifications[]):

与 Cloud Life Sciences 相比,批量处理功能可让您更灵活地自定义状态更新。例如,您可以选择在单个任务更改状态时或仅在整个作业更改状态时,通过 Pub/Sub 主题通知批处理用户。

工作流服务

如果您将工作流服务与 Cloud Life Sciences 搭配使用,则迁移过程还涉及配置工作流服务以与批处理服务搭配使用。本部分总结了您可以与 Batch 搭配使用的工作流服务。

Batch 支持 Workflows,这是 Google Cloud提供的工作流服务。如果您想将 Workflows 与 Batch 搭配使用,请参阅使用 Workflows 运行 Batch 作业。否则,下表介绍了您可能为 Cloud Life Sciences 使用的其他工作流服务,这些服务也可以与批处理一起使用。下表列出了将各个工作流服务与 Batch(而非 Cloud Life Sciences)搭配使用时的主要区别,以及详细说明了在哪里可以详细了解如何将各个服务与 Batch 搭配使用。

工作流服务 主要区别 详细信息
Cromwell

如需改为将 v2beta Cloud Life Sciences API 的 Cromwell 配置文件与 Batch API 搭配使用,请进行以下更改:

  1. 对于 actor-factory 字段,请将 cromwell.backend.google.pipelines.v2beta.PipelinesApiLifecycleActorFactory 替换为 cromwell.backend.google.batch.GcpBatchLifecycleActorFactory
  2. 移除 genomics.endpoint-url 字段。
  3. 生成新的配置文件。
如需详细了解如何将批处理与 Cromwell 搭配使用,请参阅 适用于批处理的 Cromwell 文档适用于批处理的 Cromwell 教程
dsub

如需改为使用批处理运行 Cloud Life Sciences 的 dsub 流水线,请进行以下更改:

  • 对于 provider 字段,请将 google-cls-v2 替换为 google-batch
如需详细了解如何将 Batch 与 dsub 搭配使用,请参阅 适用于 Batch 的 dsub 文档
Nextflow

如需改为使用适用于 Cloud Life Sciences 的 Nextflow 配置文件与批处理搭配使用,请进行以下更改:

  1. 对于 executor 字段,请将 google-lifesciences 替换为 google-batch
  2. 对于任何 config 前缀,请将 google.lifeScience 替换为 google.batch
如需详细了解如何将 Batch 与 Nextflow 搭配使用,请参阅 Batch 教程Nextflow 教程。如需详细了解配置选项,请参阅 Nextflow 文档
Snakemake

如需改为使用 Batch API 为 v2beta Cloud Life Sciences API 使用 Snakemake 流水线,请进行以下更改:

  1. 确保您使用的是 Snakemake 8 或更高版本。如需了解详情,请参阅在 Snakemake 版本之间迁移
  2. snakemake 命令进行以下更改:

    • --google-lifesciences 标志替换为 --executor googlebatch 标志。
    • 替换所有带有 --google-lifesciences- 前缀的其他标志,改用 --googlebatch- 前缀。
如需详细了解如何将 Batch 与 Snakemake 搭配使用,请参阅 适用于 Batch 的 Snakemake 文档

后续步骤

  • 如需为新用户和项目配置批处理,请参阅使用入门
  • 如需了解如何使用 Batch 执行工作负载,请参阅创建作业