Criar e executar um job de exemplo

Saiba como criar e executar um exemplo de job de processamento em lote que transcodifica vídeos usando o Batch para Google Cloud.


Para seguir as instruções passo a passo desta tarefa diretamente no console do Google Cloud, clique em Orientação:

Orientações


Antes de começar

  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. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  4. To initialize the gcloud CLI, run the following command:

    gcloud init
  5. 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.

  6. Make sure that billing is enabled for your Google Cloud project.

  7. 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
  8. Install the Google Cloud CLI.
  9. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  10. To initialize the gcloud CLI, run the following command:

    gcloud init
  11. 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.

  12. Make sure that billing is enabled for your Google Cloud project.

  13. 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
  14. Verifique se você e a conta de serviço do job têm as permissões necessárias para concluir este tutorial. Este tutorial usa a conta de serviço padrão para um job, que é a conta de serviço padrão do Compute Engine.

    • Para conseguir as permissões necessárias para concluir este tutorial, peça ao administrador para conceder a você os seguintes papéis do IAM:

      Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

      Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

    • Para garantir que a conta de serviço padrão do Compute Engine tenha as permissões necessárias para concluir este tutorial, peça ao administrador para conceder à conta de serviço padrão do Compute Engine os seguintes papéis do IAM:

  15. Clone o repositório git do Batch no diretório atual:
    git clone https://github.com/GoogleCloudPlatform/batch-samples.git
  16. Acesse o diretório transcoding:
    cd batch-samples/transcoding/

Preparar entradas de trabalho

  1. Crie um bucket do Cloud Storage:

    gcloud storage buckets create gs://BUCKET_NAME
    

    Substitua BUCKET_NAME por um nome globalmente exclusivo para o bucket.

    O resultado será assim:

    Creating gs://BUCKET_NAME/...
    
  2. Copie o script transcode.sh e a pasta que contém os arquivos de vídeo para o bucket do Cloud Storage:

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

    O resultado será assim:

    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
    

Criar um job

  1. Em um editor de texto de sua escolha, abra o arquivo de configuração job.json.

  2. Defina o valor do campo remotePath como o nome do bucket do 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. Salve as alterações e feche o editor de texto.

  4. Crie o job transcode:

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

    O resultado será assim:

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

    O job executa três tarefas ao mesmo tempo. Cada tarefa executa o script transcode.sh, que codifica um de três arquivos de vídeo e o envia para o bucket do Cloud Storage.

Monitorar o job

  1. No console do Google Cloud, acesse a página Lista de jobs.

    Acessar a lista de jobs

  2. Na coluna Nome do job, clique em Transcodificar.

    A página Detalhes do job será aberta.

  3. Clique na guia Eventos.

    Na seção Lista de eventos, é possível monitorar o status do job transcode. O tempo que o job leva para ser colocado na fila, programado e da execução varia com base em vários fatores. Neste exemplo, o job será concluído em aproximadamente cinco minutos.

  4. Opcional: para atualizar a página, clique em Atualizar.

Antes de prosseguir para a próxima etapa, verifique se o status do job está definido como Concluído. Se o job falhar, consulte a Solução de problemas.

Visualizar os vídeos codificados

  1. No console do Google Cloud, acesse a página Buckets.

    Acessar buckets

  2. Na coluna Nome, clique em BUCKET_NAME.

    A página Detalhes do bucket é aberta.

  3. Na coluna Nome, clique em output/ e em um dos arquivos de vídeo codificados.

    A página Detalhes do objeto é aberta.

  4. Para conferir o vídeo codificado, clique em Visualizar e em Reproduzir.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, exclua o projeto do Google Cloud com esses recursos.

Excluir o projeto

A maneira mais fácil de eliminar o faturamento é excluir o projeto usado neste tutorial.

Delete a Google Cloud project:

gcloud projects delete PROJECT_ID

Excluir recursos individuais

Se você quiser continuar usando o projeto atual, exclua os recursos individuais usados neste tutorial.

Excluir o job

Depois que o job em lote terminar a execução, exclua o job transcode:

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

O resultado será assim:

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

A exclusão de um job também exclui os detalhes e o histórico dele. Os registros do job são excluídos automaticamente no final do período de retenção de registros do Cloud Logging.

Excluir o bucket

Se você não precisar mais do bucket do Cloud Storage usado neste tutorial e do conteúdo dele, exclua o bucket:

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

O resultado será assim:

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

Excluir o repositório do Git

Se você não precisar mais do repositório do git do Batch clonado para este tutorial, exclua-o:

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

A seguir