创建和运行示例作业

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


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

操作演示


准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  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. Make sure that billing is enabled for your Google Cloud project.

  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. Make sure that billing is enabled for your Google Cloud project.

  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

后续步骤