Dataproc 워크플로 템플릿 개요

Dataproc WorkflowTemplates API는 워크플로를 관리하고 실행하는 데 유연하고 사용이 간편한 메커니즘을 제공합니다. 워크플로 템플릿은 재사용 가능한 워크플로 구성입니다. 작업 그래프를 해당 작업을 실행할 위치에 관한 정보와 함께 정의합니다.

핵심 사항:

  • 워크플로 템플릿을 인스턴스화하면 워크플로가 시작됩니다. 워크플로는 클러스터에서 작업의 DAG(Directed Acyclic Graph)를 실행하는 작업입니다.
    • 관리형 클러스터를 사용하는 워크플로는 클러스터를 만들고, 작업을 실행하고, 작업이 완료되면 클러스터를 삭제합니다.
    • 클러스터 선택기를 사용하는 워크플로는 선택된 기존 클러스터에서 작업을 실행합니다.
  • 워크플로는 복잡한 작업 흐름에 이상적입니다. 작업의 종속 항목이 성공적으로 완료된 후에만 작업이 시작되도록 작업 종속 항목을 만들 수 있습니다.
  • 워크플로 템플릿을 만들 때 Dataproc은 클러스터를 만들거나 클러스터에 작업을 제출하지 않습니다. 워크플로 템플릿이 인스턴스화될 때 Dataproc은 클러스터를 만들거나 선택하고 클러스터에서 워크플로 작업을 실행합니다.

워크플로 템플릿 종류

관리형 클러스터

워크플로 템플릿은 관리형 클러스터를 지정할 수 있습니다. 워크플로는 '임시' 클러스터를 만들어 워크플로 작업을 실행하고, 워크플로가 완료되면 이 클러스터를 삭제합니다.

클러스터 선택기

워크플로 템플릿은 이전에 클러스터에 연결된 사용자 라벨을 1개 이상 지정함으로써 워크플로 작업을 실행할 기존 클러스터를 지정할 수 있습니다. 워크플로는 모든 라벨과 일치하는 클러스터에서 실행됩니다. 여러 클러스터가 모든 라벨과 일치하는 경우 Dataproc은 모든 워크플로 작업을 실행할 수 있는 YARN 사용 가능 메모리가 가장 많은 클러스터를 선택합니다. 워크플로가 끝나면 Dataproc이 선택한 클러스터를 삭제하지 않습니다. 자세한 내용은 워크플로에 클러스터 선택기 사용을 참조하세요.

매개변수화됨

워크플로 템플릿을 서로 다른 값으로 여러 번 실행할 경우 매개변수를 사용하여 각 실행 시 워크플로 템플릿을 수정하지 않도록 합니다.

  1. 템플릿에서 매개변수를 정의한 다음

  2. 실행할 때마다 매개변수에 다른 값을 전달합니다.

자세한 내용은 워크플로 템플릿의 매개변수화를 참조하세요.

인라인

워크플로 템플릿 YAML 파일과 함께 gcloud 명령어를 사용하거나 Dataproc InstantiateInline API를 호출하여 워크플로를 인라인으로 인스턴스화할 수 있습니다(인라인 Dataproc 워크플로 사용 참조). 인라인 워크플로는 워크플로 템플릿 리소스를 만들거나 수정하지 않습니다.

워크플로 템플릿 사용 사례

  • 반복적 작업의 자동화. 자주 사용되는 클러스터 구성과 작업을 워크플로가 캡슐화합니다.

  • Transactional fire-and-forget API 상호작용 모델. 워크플로 템플릿은 다음과 같은 일반적인 흐름과 관련된 단계를 대체합니다.

    1. 클러스터 만들기
    2. 작업 제출
    3. Polling
    4. 클러스터 삭제

    워크플로 템플릿은 단일 토큰을 사용하여 클러스터 만들기부터 삭제까지의 진행 상황을 추적하며 오류 처리 및 복구를 자동화합니다. 또한 Dataproc을 Cloud Functions 및 Cloud Composer와 같은 다른 도구와의 통합을 간소화합니다.

  • 임시 및 장기 클러스터 지원. Apache Hadoop을 실행할 때 흔히 겪는 어려움은 클러스터를 미세 조정하고 크기를 알맞게 조정하는 것입니다. 임시(관리형) 클러스터는 단일 작업 부하를 실행하므로 더 쉽게 구성될 수 있습니다. 클러스터 선택기를 장기 클러스터와 함께 사용하면 클러스터를 만들고 삭제하는 데 드는 상각비용 없이 동일한 워크로드를 반복적으로 실행할 수 있습니다.

  • 세분화된 IAM 보안. Dataproc 클러스터를 만들고 작업을 제출하려면 전체 IAM 권한이 필요하거나 전혀 필요하지 않습니다. 워크플로 템플릿은 템플릿별 workflowTemplates.instantiate 권한을 사용하며 클러스터 또는 작업 권한에 종속되지 않습니다.