安排相关联的作业

本文档介绍了如何创建和运行作业,这些作业在特定作业成功或失败之前不会被安排。如需详细了解作业状态, 请参阅作业创建和执行概览

如果您的工作负载的资源要求各不相同,请考虑使用依赖作业来创建自动作业链,每个作业都使用单独的虚拟机。 例如,将用于低需求操作(如数据准备)和计算密集型操作(如数据处理)的虚拟机类型分开。 通过使用依赖作业来帮助优化资源消耗,您可以降低费用和配额使用量。

准备工作

  1. 如果您之前未使用过 Batch,请查看 Batch 使用入门 ,并完成 项目和用户的前提条件以启用 Batch。
  2. 如需获得创建作业所需的权限,请让您的管理员授予您以下 IAM 角色:

    如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

    您也可以通过自定义 角色或其他预定义 角色来获取所需的权限。

限制

依赖作业具有以下限制:

  • 一个依赖作业最多可以有四个依赖项。每个依赖项都必须包含唯一的作业名称和以下其中一种必需状态:

    • SUCCEEDED:成功
    • FAILED:失败
    • FINISHED:成功或失败
  • 创建依赖作业时,其所有依赖作业都必须存在。

  • 在每个依赖作业进入其所需状态之前,依赖作业无法进入已安排 (SCHEDULED) 状态。如果依赖作业无法进入其所需状态,则依赖作业会立即失败,而不会被安排。

  • 与所有作业一样,如果依赖作业超出队列中的 最长等待时间,则无法进入已安排 (SCHEDULED) 状态 。 Batch 会强制执行此限制,以防止您的作业过时。因此,如果您预计任何依赖作业完成所需的剩余时间可能会超出此限制,请考虑执行以下一项或多项操作:

创建依赖作业

您可以使用以下方法创建 依赖作业

如需指定作业是依赖作业,请在 JSON 文件的正文中添加 dependencies[].items字段, 该字段支持指定一个或多个依赖项(以键值对的形式):

"dependencies": [
  {
    "items": {
      "DEPENDENCY_JOB_NAME": "REQUIRED_STATE"
    }
  }
]

替换以下内容:

  • DEPENDENCY_JOB_NAME:依赖作业的名称,该作业必须达到其所需状态,然后才能安排此依赖作业。

  • REQUIRED_STATE:相应依赖作业的所需状态,必须为 SUCCEEDEDFAILEDFINISHED

例如,具有三个依赖项的依赖作业可以具有类似于以下内容的 JSON 配置文件:

{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "script": {
              "text": "echo Hello World! This is task $BATCH_TASK_INDEX."
            }
          }
        ]
      },
      "taskCount": 3
    }
  ],
  "dependencies": [
    {
      "items": {
        "DEPENDENCY_JOB_NAME_1": "REQUIRED_STATE_1",
        "DEPENDENCY_JOB_NAME_2": "REQUIRED_STATE_2",
        "DEPENDENCY_JOB_NAME_3": "REQUIRED_STATE_3"
      }
    }
  ]
}

后续步骤