Cloud Scheduler를 사용하는 워크플로

이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.

  • Dataproc
  • Compute Engine
  • Cloud 스케줄러

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요. Google Cloud를 처음 사용하는 사용자는 무료 체험판을 사용할 수 있습니다.

시작하기 전에

프로젝트 설정

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

    Go to project selector

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

  4. API Dataproc, Compute Engine, and Cloud Scheduler 사용 ��정

    API 사용 설정

  5. Google Cloud CLI를 설치합니다.
  6. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  9. API Dataproc, Compute Engine, and Cloud Scheduler 사용 설정

    API 사용 설정

  10. Google Cloud CLI를 설치합니다.
  11. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init

맞춤 역할 만들기

  1. Google Cloud 콘솔에서 IAM 및 관리자 → 역할 열기 페이지를 엽니다.
    1. 역할 만들기를 클릭하여 역할 만들기 페이지를 엽니다.
    2. 제목, 설명, ID, 출시 단계 필드를 작성합니다. 추천: 'Dataproc 워크플로 템플릿 만들기'를 역할 제목으로 사용합니다.
    3. 권한 추가를 클릭합니다.
      1. 권한 추가 양식에서 필터를 클릭한 후 '권한'을 선택합니다. 필터를 완료하여 '권한: dataproc.workflowTemplates.instantiate'를 읽습니다.
      2. 나열된 권한 왼쪽에 있는 체크박스를 클릭한 다음 추가를 클릭합니다.
    4. 역할 만들기 페이지에서 권한 추가를 다시 클릭하여 이전 하위 단계를 반복해서 커스텀 역할에 'iam.serviceAccounts.actAs' 권한을 추가합니다. 이제 역할 만들기 페이지에 두 권한이 나열됩니다.
    5. 커스텀 역할 페이지에서 만들기를 클릭합니다. 커스텀 역할이 역할 페이지에 나열됩니다.

서비스 계정 만들기

  1. Google Cloud 콘솔에서 서비스 계정 페이지로 이동합니다.

    서비스 계정으로 이동

  2. 프로젝트를 선택합니다.

  3. 서비스 계정 만들기를 클릭합니다.

  4. 서비스 계정 이름 필드에 workflow-scheduler이라는 이름을 입력합니다. Google Cloud 콘솔은 이 이름을 기반으로 서비스 계정 ID 필드를 채웁니다.

  5. 선택사항: 서비스 계정 설명 필드에 서비스 계정의 설명을 입력합니다.

  6. 만들고 계속하기를 클릭합니다.

  7. 역할 선택 필드를 클릭하고 이전 단계에서 만든 Dataproc 워크플로 템플릿 만들기 커스텀 역할을 선택합니다.

  8. 계속을 클릭합니다.

  9. 서비스 계정 관리자 역할 필드에 Google 계정 이메일 주소를 입력합니다.

  10. 완료를 클릭하여 서비스 계정 만들기를 마칩니다.

워크플로 템플릿 만들기

로컬 터미널 창 또는 Cloud Shell에서 아래 나열된 명령어를 복사하고 실행하여 워크플로 템플릿을 만들고 정의합니다.

참고

  • 명령어는 'us-central1' 리전을 지정합니다. 이전에 gcloud config set compute/region를 실행하여 리전 속성을 설정한 경우 다른 리전을 지정하거나 --region 플래그를 삭제할 수 있습니다.
  • add-job 명령어의 '-- '(대시 대시 공백) 시퀀스는 1000 인수를 SparkPi 작업에 전달합니다. 이 값은 Pi 값을 추정하는 데 사용할 샘플 수를 지정합니다.

  1. 워크플로 템플릿 만들기

    gcloud dataproc workflow-templates create sparkpi \
        --region=us-central1
    
  2. sparkpi 워크플로 템플릿에 spark 작업을 추가합니다. 'compute' 단계 ID가 필요하며 추가된 SparkPi 작업을 식별합니다.
    gcloud dataproc workflow-templates add-job spark \
        --workflow-template=sparkpi \
        --step-id=compute \
        --class=org.apache.spark.examples.SparkPi \
        --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
        --region=us-central1 \
        -- 1000
    

  3. 관리형, 단일 노드 클러스터를 사용하여 워크플로를 실행합니다. Dataproc이 클러스터를 만들고 워크플로를 실행한 다음 워크플로가 완료되면 클러스터를 삭제합니다.

    gcloud dataproc workflow-templates set-managed-cluster sparkpi \
        --cluster-name=sparkpi \
        --single-node \
        --region=us-central1
    

  4. Google Cloud 콘솔의 Dataproc 워크플로 페이지에서 sparkpi 이름을 클릭하여 워크플로 템플릿 세부정보 페이지를 엽니다. sparkpi 템플릿 속성을 확인합니다.

Cloud Scheduler 작업 만들기

  1. Google Cloud 콘솔에서 Cloud Scheduler 페이지를 엽니다(페이지를 열려면 프로젝트를 선택해야 할 수 있음). 작업 만들기를 클릭합니다.

  2. 다음 작업 정보를 입력하거나 선택합니다.

    1. 리전 선택: 'us-central' 또는 워크플로 템플릿을 만든 다른 리전입니다.
    2. 이름: 'sparkpi'
    3. 실행 빈도: '* * * * *'는 1분마다 선택합니다. '0 9 * * 1'은 매주 월요일 오전 9시에 선택합니다. 다른 unix-cron 값은 작업 일정 정의를 참조하세요. 참고: Google Cloud 콘솔의 Cloud Scheduler 작업에서 지금 실행 버튼을 클릭하여 작업에 설정된 실행 빈도에 관계없이 작업을 실행하고 테스트할 수 있습니다.
    4. 시간대: timezone을 선택합니다. 'United States'를 입력하여 미국 시간대를 표시합니다.
    5. 대상: 'HTTP'
    6. URL: your-project-id를 삽입한 후 다음 URL을 삽입합니다. 다른 리전에서 워크플로 템플릿을 만든 경우 'us-central1'을 바꿉니다. 이 URL은 Dataproc workflowTemplates.instantiate API를 호출하여 sparkpi 워크플로 템플릿을 실행합니다.
      https://dataproc.googleapis.com/v1/projects/your-project-id/regions/us-central1/workflowTemplates/sparkpi:instantiate?alt=json
      
    7. HTTP 메서드:
      1. 'POST'
      2. 본문: '{}'
    8. 인증 헤더:
      1. 'OAuth 토큰 추가'
      2. 서비스 계정: 이 가이드에서 만든 서비스 계정service account address를 삽입합니다. your-project-id를 삽입한 후 다음 계정 주소를 사용할 수 있습니다.
        workflow-scheduler@your-project-id.iam.gserviceaccount
        
      3. 범위: 이 항목은 무시해도 됩니다.
    9. 만들기를 클릭합니다.

예약된 워크플로 작업 테스트

  1. Cloud Scheduler 작업 페이지의 sparkpi 작업 행에서 지금 실행을 클릭합니다.

  2. 몇 분 정도 기다린 후 Dataproc 워크플로 페이지를 열어 sparkpi 워크플로가 완료되었는지 확인합니다.

  3. 워크플로가 관리형 클러스터를 삭제하면 Google Cloud 콘솔에 작업 세부정보가 유지됩니다. Dataproc 작업 페이지에 나열된 compute... 작업을 클릭하여 워크플로 작업 세부정보를 확인합니다.

삭제

이 가이드의 워크플로는 워크플로가 완료되면 관리 클러스터를 삭제합니다. 워크플로를 유지하면 워크플로를 다시 실행할 수 있으며 요금이 부과되지 않습니다. 반복되는 비용이 발생하지 않도록 이 가이드에서 만든 다른 리소스를 삭제할 수 있습니다.

프로젝트 삭제

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

워크플로 템플릿 삭제

gcloud dataproc workflow-templates delete sparkpi \
    --region=us-central1

Cloud 예약 작업 삭제

Google Cloud 콘솔에서 Cloud Scheduler 작업 페이지를 열고 sparkpi 함수 왼쪽에 있는 상자를 선택한 후 삭제를 클릭합니다.

서비스 계정 삭제

Google Cloud 콘솔에서 IAM 및 관리자 → 서비스 계정 페이지를 열고 workflow-scheduler... 서비스 계정 왼쪽에 있는 상자를 선택한 후 삭제를 클릭합니다.

다음 단계