워크플로에 YAML 파일 사용

YAML 파일에 워크플로 템플릿을 정의한 다음 템플릿을 인스턴스화하여 워크플로를 실행할 수 있습니다. 워크플로 템플릿 YAML 파일을 가져오고 내보내어 Dataproc 워크플로 템플릿 리소스를 만들고 업데이트할 수도 있습니다.

YAML 파일을 사용하여 워크플로 실행

워크플로 템플릿 리소스를 먼저 만들지 않고 워크플로를 실행하려면 gcloud dataproc workflow-templates instantiate-from-file 명령어를 사용합니다.

  1. YAML 파일에 워크플로 템플릿을 정의합니다. YAML 파일은 id 필드를 제외한 모든 필수 WorkflowTemplate 필드를 포함하고 있어야 하고, version 필드와 모든 출력 전용 필드도 제외해야 합니다. 다음 워크플로 예에서 terasort 단계의 prerequisiteStepIds 목록은 teragen 단계가 성공적으로 완료된 후에만 terasort 단계가 시작되도록 합니다.
    jobs:
    - hadoopJob:
        args:
        - teragen
        - '1000'
        - hdfs:///gen/
        mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
      stepId: teragen
    - hadoopJob:
        args:
        - terasort
        - hdfs:///gen/
        - hdfs:///sort/
        mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
      stepId: terasort
      prerequisiteStepIds:
        - teragen
    placement:
      managedCluster:
        clusterName: my-managed-cluster
        config:
          gceClusterConfig:
            zoneUri: us-central1-a
    
  2. 워크플로를 실행합니다.
    gcloud dataproc workflow-templates instantiate-from-file \
        --file=TEMPLATE_YAML \
        --region=REGION
    

Dataproc Auto Zone 배치로 YAML 파일을 사용하여 워크플로 인스턴스화

  1. YAML 파일에 워크플로 템플릿을 정의합니다. 이 YAML 파일은 Dataproc Auto Zone Placement가 클러스터의 영역을 선택하도록 zoneUri 필드가 빈 문자열('')로 설정된다는 점을 제외하면 이전 YAML 파일과 동일합니다.
    jobs:
    - hadoopJob:
        args:
        - teragen
        - '1000'
        - hdfs:///gen/
        mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
      stepId: teragen
    - hadoopJob:
        args:
        - terasort
        - hdfs:///gen/
        - hdfs:///sort/
        mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
      stepId: terasort
      prerequisiteStepIds:
        - teragen
    placement:
      managedCluster:
        clusterName: my-managed-cluster
        config:
          gceClusterConfig:
            zoneUri: ''
    
  2. 워크플로를 실행합니다. 자동 배치를 사용할 때는 리전gcloud 명령어에 전달해야 합니다.
    gcloud dataproc workflow-templates instantiate-from-file \
        --file=TEMPLATE_YAML \
        --region=REGION
    

워크플로 템플릿 YAML 파일 가져오기 및 내보내기

워크플로 템플릿 YAML 파일을 가져오고 내보낼 수 있습니다. 일반적으로 워크플로 템플릿을 먼저 YAML 파일로 내보내고, YAML을 편집한 후에 편집된 YAML 파일을 가져와서 템플릿을 업데이트합니다.

  1. YAML 파일로 워크플로 템플릿을 내보냅니다. 내보내기 작업 중에 idversion 필드와 모든 출력 전용 필드가 출력에서 필터링되며 내보낸 YAML 파일에 표시되지 않습니다.

    gcloud dataproc workflow-templates export TEMPLATE_ID or TEMPLATE_NAME \
        --destination=TEMPLATE_YAML \
        --region=REGION
    
    명령어에 WorkflowTemplate id 또는 정규화된 템플릿 리소스 name('projects/PROJECT_ID/regions/REGION/workflowTemplates/TEMPLATE_ID')를 전달할 수 있습니다.

  2. YAML 파일을 로컬에서 편집합니다. 템플릿을 내보낼 때 YAML 파일에서 필터링된 id, version, 출력 전용 필드는 가져온 YAML 파일에서 허용되지 않습니다.

  3. YAML 파일로 업데이트된 워크플로 템플릿을 가져옵니다.

    gcloud dataproc workflow-templates import TEMPLATE_ID or TEMPLATE_NAME \
        --source=TEMPLATE_YAML \
        --region=REGION
    
    명령어에 WorkflowTemplate id 또는 정규화된 템플릿 리소스 name('projects/PROJECT_ID/regions/region/workflowTemplates/TEMPLATE_ID')를 전달할 수 있습니다. 이름이 동일한 템플릿 리소스가 덮어써지고(업데이트되고) 버전 번호가 증분됩니다. 동일한 이름의 템플릿이 없으면 새로 생성됩니다.