예시 작업 만들기 및 실행

Batch를 사용하여 동영상을 트랜스코딩하는 예시 일괄 처리 작업을 만들고 실행하는 방법을 알아봅니다. Google Cloud


콘솔에서 이 태스크에 대한 단계별 안내를 직접 수행하려면 Google Cloud 둘러보기를 클릭합니다.

둘러보기


시작하기 전에

  1. 계정에 로그인합니다. Google Cloud 를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. Google Cloud신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud CLI를 설치합니다.

  3. 외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  4. gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.

    gcloud init
  5. 프로젝트를 만들거나 Google Cloud 선택합니다.

    프로젝트를 선택하거나 만드는 데 필요한 역할

    • 프로젝트 선택: 프로젝트를 선택하는 데 특정 IAM 역할이 필요하지 않습니다. 역할이 부여된 프로젝트를 선택할 수 있습니다.
    • 프로젝트 만들기: 프로젝트를 만들려면 resourcemanager.projects.create 권한이 포함된 프로젝트 생성자 역할 (roles/resourcemanager.projectCreator)이 필요합니다. 역할 부여 방법 알아보기.
    • 프로젝트 만들기: Google Cloud

      gcloud projects create PROJECT_ID

      PROJECT_ID를 만들려는 Google Cloud 프로젝트의 이름으로 바꿉니다.

    • 만든 Google Cloud 프로젝트를 선택합니다.

      gcloud config set project PROJECT_ID

      PROJECT_ID를 프로젝트 이름으로 바꿉니다. Google Cloud

  6. 프로젝트에 결제가 사용 설정되어 있는지 확인합니다 Google Cloud .

  7. Batch, Compute Engine, Logging, Cloud Storage API를 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 역할 (roles/serviceusage.serviceUsageAdmin)이 포함된 서비스 사용량 관리자 IAM serviceusage.services.enable 권한이 필요합니다. 역할 부여 방법 알아보기.

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  8. Google Cloud CLI를 설치합니다.

  9. 외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  10. gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.

    gcloud init
  11. 프로젝트를 만들거나 Google Cloud 선택합니다.

    프로젝트를 선택하거나 만드는 데 필요한 역할

    • 프로젝트 선택: 프로젝트를 선택하는 데 특정 IAM 역할이 필요하지 않습니다. 역할이 부여된 프로젝트를 선택할 수 있습니다.
    • 프로젝트 만들기: 프로젝트를 만들려면 resourcemanager.projects.create 권한이 포함된 프로젝트 생성자 역할 (roles/resourcemanager.projectCreator)이 필요합니다. 역할 부여 방법 알아보기.
    • 프로젝트 만들기: Google Cloud

      gcloud projects create PROJECT_ID

      PROJECT_ID를 만들려는 Google Cloud 프로젝트의 이름으로 바꿉니다.

    • 만든 Google Cloud 프로젝트를 선택합니다.

      gcloud config set project PROJECT_ID

      PROJECT_ID를 프로젝트 이름으로 바꿉니다. Google Cloud

  12. 프로젝트에 결제가 사용 설정되어 있는지 확인합니다 Google Cloud .

  13. Batch, Compute Engine, Logging, Cloud Storage API를 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 역할 (roles/serviceusage.serviceUsageAdmin)이 포함된 서비스 사용량 관리자 IAM serviceusage.services.enable 권한이 필요합니다. 역할 부여 방법 알아보기.

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  14. 이 튜토리얼을 완료하는 데 필요한 권한이 사용자와 작업의 서비스 계정에 있는지 확인합니다. 이 튜토리얼에서는 Compute Engine 기본 서비스 계정인 작업의 기본 서비스 계정을 사용합니다.

  15. Batch git 저장소를 현재 디렉터리에 클론합니다.
    git clone https://github.com/GoogleCloudPlatform/batch-samples.git
  16. 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개의 태스크를 동시에 실행합니다. 각 태스크는 동영상 파일 3개 중 1개를 인코딩하여 Cloud Storage 버킷에 업로드하는 transcode.sh 스크립트를 실행합니다.

작업 모니터링

  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

개별 리소스 삭제

현재 프로젝트를 계속 사용하려면 이 튜토리얼에서 사용된 개별 리소스를 삭제합니다.

작업 삭제

Batch 작업 실행이 완료되면 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 저장소 삭제

이 튜토리얼을 위해 클론한 Batch git 저장소가 더 이상 필요하지 않으면 삭제할 수 있습니다.

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

다음 단계