创建和运行示例作业

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


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

操作演示


准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    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. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    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 个视频文件中的 1 个进行编码,并将其上传到 Cloud Storage 存储桶。

监控作业

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

    转到作业列表

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

    作业详情页面随即打开。

  3. 点击事件标签页。

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

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

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

查看经过编码的视频

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

    进入“存储桶”

  2. 名称列中,点击 BUCKET_NAME

    系统随即会打开存储分区详情页面。

  3. 名称列中,点击 output/,然后点击其中一个 使用经过编码的视频文件

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

  4. 要查看编码后的视频,请点击预览,然后点击 播放

清理

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

删除项目

若要避免产生费用,最简单的方法是删除 教程。

Delete a Google Cloud project:

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 日志保留期限

删除存储桶

如果您不再需要此 Codelab 中使用的 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 代码库

如果您不再需要克隆的 Batch git 代码库 可以将其删除:

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

后续步骤