创建和运行示例作业

了解如何在 Batch 中创建和运行示例视频转码作业。


如需在 Google Cloud 控制台中直接遵循有关此任务的分步指导,请点击操作演示

操作演示


准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 安装 Google Cloud CLI。
  3. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. 确保您的 Google Cloud 项目已启用结算功能

  6. Enable the Batch, Compute Engine, Logging and Cloud Storage APIs:

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  7. 安装 Google Cloud CLI。
  8. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  9. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  10. 确保您的 Google Cloud 项目已启用结算功能

  11. Enable the Batch, Compute Engine, Logging and Cloud Storage APIs:

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  12. 请确保您和该作业的服务帐号拥有完成本教程所需的权限。本教程为作业使用默认服务帐号,这是 Compute Engine 默认服务帐号

    • 如需获取完成本教程所需的权限,请让管理员授予您以下 IAM 角色:

      • 如需创建、查看和删除作业,请执行以下操作:
      • 如需创建、查看和删除 Cloud Storage 存储分区,请执行以下操作: 项目的 Storage Admin (roles/storage.admin)
      • 如需查看作业的日志,请执行以下操作: 使用项目的日志查看器 (roles/logging.viewer)

      如需详细了解如何授予角色,请参阅管理访问权限

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

    • 为确保 Compute Engine 默认服务帐号具有完成本教程的必要权限,请让管理员向 Compute Engine 默认服务帐号授予以下 IAM 角色:

      • 项目的 Batch Agent Reporter (roles/batch.agentReporter)
      • 如需允许作业访问 Cloud Storage 存储分区,请执行以下操作: 项目的 Storage Admin (roles/storage.admin)
      • 如需让作业在 Logging 中生成日志,请执行以下操作: 针对项目的 Logs Writer (roles/logging.logWriter)

  13. 批处理 Git 代码库克隆到当前目录中:
    git clone https://github.com/GoogleCloudPlatform/batch-samples.git
    
  14. 转到 transcoding 目录:
    cd batch-samples/transcoding/
    

准备作业输入

  1. 创建 Cloud Storage 存储桶,请运行以下命令:

    gcloud storage buckets create gs://BUCKET_NAME
    

    BUCKET_NAME 替换为存储桶的全局唯一名称。

    输出类似于以下内容:

    Creating gs://BUCKET_NAME/...
    
  2. transcode.sh 脚本和包含视频文件的文件夹复制到您的 Cloud Storage 存储桶:

    gcloud storage cp -R transcode.sh input gs://BUCKET_NAME
    

    输出类似于以下内容:

    Copying file://transcode.sh to gs://BUCKET_NAME/transcode.sh
    Copying file://input/video-2.mp4 to gs://BUCKET_NAME/input/video-2.mp4
    Copying file://input/video-1.mp4 to gs://BUCKET_NAME/input/video-1.mp4
    Copying file://input/video-0.mp4 to gs://BUCKET_NAME/input/video-0.mp4
      Completed files 4/4 | 37.5MiB/37.5MiB
    
    Average throughput: 48.4MiB/s
    

创建作业

  1. 在您选择的文本编辑器中,打开 job.json 配置文件。

  2. remotePath 字段的值设置为您的 Cloud Storage 存储桶的名称:

    {
      "taskGroups": [
        {
          "taskSpec": {
            "runnables": [
              {
                "script": {
                  "text": "bash /mnt/share/transcode.sh"
                }
              }
            ],
            "computeResource": {
              "cpuMilli": 2000,
              "memoryMib": 2048
            },
            "volumes": [
              {
                "gcs": {
                  "remotePath": "BUCKET_NAME"
                },
                "mountPath": "/mnt/share"
              }
            ],
            "maxRetryCount": 2,
            "maxRunDuration": "600s"
          },
          "taskCount": 3,
          "parallelism": 3
        }
      ],
      "allocationPolicy": {
        "instances": [
          {
            "policy": {
              "machineType": "n2d-standard-4",
              "provisioningModel": "SPOT"
            }
          }
        ]
      },
      "labels": {
        "department": "creative",
        "env": "testing"
      },
      "logsPolicy": {
        "destination": "CLOUD_LOGGING"
      }
    }
    
  3. 保存更改并关闭文本编辑器。

  4. 创建 transcode 作业:

    gcloud batch jobs submit transcode \
        --config=job.json \
        --location=us-central1
    

    输出类似于以下内容:

    Job transcode-7a1654ca-211c-40e8-b0fb-8a00 was successfully submitted.
    ...
    

    该作业并发运行 3 项任务。每个任务都会运行 transcode.sh 脚本,该脚本会对 3 个视频文件中的一个进行编码,并将其上传到 Cloud Storage 存储桶。

监控作业

  1. 在 Google Cloud 控制台中,前往作业列表页面。

    转到“作业”列表

  2. 作业名称列中,点击转码

    作业详情页面随即打开。

  3. 点击事件标签页。

    事件列表部分中,您可以监控 transcode 作业的状态。完成作业排队、调度和运行所需的时间因多种因素而异。在此示例中,作业预计会在大约 5 分钟内完成。

  4. 可选:如需更新页面,请点击 刷新

在继续下一步之前,请确保作业状态设置为成功。如果作业失败,请参阅问题排查

查看经过编码的视频

  1. 在 Google Cloud 控制台中,前往存储桶页面。

    进入“存储桶”

  2. 名称列中,点击 BUCKET_NAME

    此时会打开存储分区详情页面。

  3. 名称列中,点击 output/,然后点击某个已编码的视频文件。

    对象详情页面随即会打开。

  4. 如需查看经过编码的视频,请点击预览,然后点击 播放

清理

为避免因本页面中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的 Google Cloud 项目。

删除项目

若要避免产生费用,最简单的方法是删除您在本教程中使用的项目。

删除 Google Cloud 项目:

gcloud projects delete PROJECT_ID

删除各个资源

如果您想继续使用当前项目,请删除本教程中使用的各个资源。

删除作业

批量作业运行完毕后,删除 transcode 作业:

gcloud batch jobs delete transcode \
    --location=us-central1

输出类似于以下内容:

Job projects/example-project/locations/us-central1/jobs/transcode deletion is in progress

删除作业会同时删除其详细信息和历史记录。 该作业的日志将在 Cloud Logging 日志保留期限结束时自动删除。

删除存储桶

如果您不再需要本教程中使用的 Cloud Storage 存储桶及其内容,请删除该存储桶:

gcloud storage rm gs://BUCKET_NAME \
    --recursive

输出类似于以下内容:

Removing objects:
Removing gs://BUCKET_NAME/input/video-0.mp4#1694788495332395...
Removing gs://BUCKET_NAME/input/video-2.mp4#1694788495296173...
Removing gs://BUCKET_NAME/input/video-1.mp4#1694788495228839...
Removing gs://BUCKET_NAME/output/video-0.mp4#1694788495332395...
Removing gs://BUCKET_NAME/output/video-2.mp4#1694788495296173...
Removing gs://BUCKET_NAME/output/video-1.mp4#1694788495228839...
Removing gs://BUCKET_NAME/transcode.sh#1694788495039427...
  Completed 4/4
Removing Buckets:
Removing gs://BUCKET_NAME/...
  Completed 1/1

删除 Git 代码库

如果您不再需要为本教程克隆的批处理 Git 代码库,可以将其删除:

cd ../../ && rm -rf batch-samples

后续步骤