Dataproc 보조 작업자

표준 Compute Engine VM을 Dataproc 작업자('기본' 작업자라고도 함)로 사용하는 것 외에도 Dataproc 클러스터는 secondary 작업자를 사용할 수 있습니다.

다음 특성은 Dataproc 클러스터의 모든 보조 작업자에 적용됩니다.

  • 처리 전용— 보조 작업자는 데이터를 저장하지 않습니다. 처리 노드 기능만 수행합니다. 따라서 보조 작업자를 사용하면 스토리지를 확장하지 않고도 컴퓨팅을 확장할 수 있습니다.

  • 보조 작업자 전용 클러스터 없음— 클러스터에 기본 작업자가 반드시 포함되어야 합니다. 클러스터를 만들고 기본 작업자 수를 지정하지 않으면 Dataproc이 클러스터에 기본 작업자 2개를 추가합니다.

  • 머신 유형: 기본적으로 보조 작업자는 클러스터 기본 작업자의 머신 유형을 사용합니다. 예를 들어 n1-standard-4 머신 유형을 사용하는 기본 작업자로 클러스터를 만들 경우, 기본적으로 클러스터에 추가되는 모든 보조 작업자도 n1-standard-4 머신을 사용합니다.

    보조 작업자에 기본 작업자 머신 유형을 사용하는 대신 보조 작업자에 순위가 지정된 머신 유형 목록을 하나 이상 지정할 수 있습니다. 자세한 내용은 Dataproc 가변형 VM을 참조하세요.

  • 영구 디스크 크기 — 기본적으로 보조 작업자는 100GB 또는 기본 작업자 부팅 디스크 크기 중 작은 용량을 사용해서 생성됩니다. 이 디스크 공간은 데이터의 로컬 캐싱에 사용되며 HDFS를 통해 사용할 수 없습니다. 클러스터를 만들 때 gcloud dataproc clusters create --secondary-worker-boot-disk-size 명령어로 기본 디스크 크기를 재정의할 수 있습니다. 클러스터를 만들 때 클러스터에 보조 작업자가 없어도 이 플래그를 지정할 수 있습니다.

  • 비동기 생성 - 클러스터를 만들거나 확장하여 보조 작업자를 추가할 경우 생성 또는 업데이트 작업이 완료될 때까지 보조 작업자가 프로비저닝되지 않을 수 있습니다. 이는 Dataproc이 MIG (관리형 인스턴스 그룹)를 사용하여 보조 작업자를 관리하므로 VM이 프로비저닝되는 즉시 비동기적으로 VM을 만들기 때문입니다 (자세한 내용은관리형 인스턴스의 상태 확인 참조).

선점형 및 비선점형 보조 작업자

보조 작업자는 스팟 VM, 표준 선점형 VM, 비선점형 VM의 3가지 유형이 있습니다. Dataproc 보조 작업자의 기본 유형은 표준 선점형 VM입니다. 스팟 및 비선점형 보조 작업자를 혼합하여 지정할 수 있습니다.

예를 들어 클러스터를 만들 때 보조 작업자 3개를 선택한 경우 스팟 VM 3개, 선점형 VM 3개, 비선점형 VM 3개 또는 스팟 및 비선점형 작업자 혼합을 지정할 수 있습니다.

선점형 작업자

  • 선점형 작업자가 삭제될 가능성은 작업 안정성에 영향을 미칠 수 있지만 중요하지 않은 데이터 처리에 대한 시간당 컴퓨팅 비용을 낮추거나 낮은 총 비용(Google Cloud 가격 계산기를 사용하여 비용 추정 가능)으로 매우 큰 클러스터를 만들기 위해 선점형 인스턴스 사용을 결정할 수 있습니다.

  • 최상의 결과를 얻으려면 클러스터의 선점형 작업자 수가 클러스터에 있는 모든 작업자(기본 및 모든 보조 작업자)의 50% 미만이어야 합니다.

  • 선점형 작업자를 사용하는 경우 작업이 비선점형 작업자에서 실행되는 작업에 비해 일시적인 단일 작업자 태스크가 실패할 횟수가 더 많을 수 있습니다. 하위 수준의 태스크 실패에 더 잘 대처할 수 있도록 자동 확장 클러스터에서 사용되는 기본 속성 값과 비슷한 클러스터 속성 값을 설정하여 최대 태스크 재시도 횟수를 늘리고 작업 실패를 방지할 수 있습니다.

  • 비용 절감 고려사항: 선점형 VM을 사용하면 선점에 의해 작업 실행이 길어져 작업 비용이 높아지므로 항상 비용이 절약되지 않습니다. 선점형 VM과 함께 향상된 유연성 모드 (EFM)를 사용하면 이 결과를 완화하는 데 도움이 되지만 선점형 VM의 전체 비용 절감액은 사용 사례마다 다릅니다. 일반적으로 작업 실행 중에 선점 가능성이 낮으므로 단기 실행 작업은 선점형 VM 사용에 더 적합합니다. 비용을 예측하고 최적의 솔루션을 사용할 수 있도록 비선점형 VM 및 EFM이 있는 선점형 VM과 같은 다양한 작업 옵션을 사용해 보세요.

비선점형 작업자

  • 작업 안정성을 저하시키지 않고 컴퓨팅을 확장할 비선점형 보조 작업자가 포함된 클러스터를 만들 수 있습니다. 이렇게 하려면 non-preemptible을 보조 작업자 유형으로 지정합니다. 비선점형과 스팟 보조 작업자를 혼합할 수 있습니다.

보조 작업자 선택

클러스터를 만들 때 Google Cloud 콘솔, gcloud CLI 또는 Dataproc API를 참조하세요.

  • 스팟을 비선점형 보조 작업자와 혼합할 수 있습니다.
  • 클러스터가 생성된 후 클러스터를 업데이트하여 클러스터의 보조 작업자 수를 변경할 수 있지만 유형은 변경할 수 없습니다.
  • 라벨 업데이트는 24시간 이내에 모든 선점형 보조 작업자에게 적용됩니다. 라벨 업데이트는 비선점형 기존 보조 작업자에게 적용되지 않습니다. 라벨 업데이트는 라벨 업데이트 후에 클러스터에 추가된 모든 작업자에 적용됩니다. 예를 들어 클러스터를 확장하면 모든 새 기본 및 보조 작업자가 새 라벨을 갖게 됩니다.

콘솔

Google Cloud 콘솔에서 Dataproc 클러스터를 만들 때 보조 작업자 수를 지정할 수 있습니다. 클러스터가 생성된 후 Google Cloud 콘솔에서 클러스터 구성을 수정하여 보조 작업자를 추가하고 삭제할 수 있습니다.

보조 작업자가 포함된 클러스터 만들기

Google Cloud 콘솔의 Dataproc 클러스터 만들기 페이지에 있는 노드 구성 패널의 보조 작업자 노드 섹션에서 새 클러스터에 적용할 보조 작업자의 수와 유형을 설정할 수 있습니다. 각각 보조 작업자 노드선점 필드에 보조 작업자의 수와 유형을 지정합니다.

보조 인스턴스로 클러스터 업데이트

클러스터의 보조 작업자 수를 업데이트하려면 Google Cloud 콘솔의 클러스터 페이지에서 클러스터 이름을 클릭합니다. 클러스터 세부정보 페이지에서. **구성** 탭을 클릭한 다음 수정을 클릭하고 보조 작업자 노드 필드에서 수를 업데이트합니다.

클러스터에서 모든 보조 인스턴스 삭제

클러스터에서 보조 작업자를 모두 삭제하려면 앞서 설명한 대로 클러스터 구성을 업데이트하고 보조 작업자 노드 필드에 0을 지정합니다.

Google Cloud CLI 명령어

클러스터가 생성될 때 gcloud dataproc clusters create 명령어를 사용하여 보조 작업자를 클러스터에 추가합니다. 클러스터가 생성된 후 gcloud dataproc clusters update 명령어를 사용하여 보조 작업자를 클러스터에 추가하거나 클러스터에서 삭제할 수 있습니다(보조 작업자의 유형이 아닌 수는 업데이트 가능).

보조 작업자가 포함된 클러스터 만들기

보조 작업자가 포함된 클러스터를 만들려면 gcloud dataproc clusters create 명령어를 --num-secondary-workers 인수와 함께 사용합니다. 보조 작업자는 기본적으로 표준 선점형 VM입니다. 클러스터를 만들 때 --secondary-worker-type 플래그를 `non-preemptible` 또는 `spot`으로 설정하여 비선점형 또는 스팟 보조 작업자를 지정할 수 있습니다. 다음 예에서는 각 보조 작업자 유형(선점형(기본값), 스팟(선점형), 비선점형)으로 클러스터를 만드는 방법을 보여줍니다. 추가 플래그를 사용하여 스팟을 비선점형 보조 작업자와 혼합할 수 있습니다.

예시 1

다음 명령어는 2개의 표준 선점형(기본 유형) 보조 작업자로 'cluster1'을 만듭니다.

gcloud dataproc clusters create cluster1 \
    --num-secondary-workers=2 \
    --region=us-central1
예시 2

다음 명령어는 secondary-worker-type 플래그를 사용하여 2개의 스팟(선점형) 보조 작업자로 'cluster2'를 만듭니다.

gcloud dataproc clusters create cluster2 \
    --num-secondary-workers=2 \
    --secondary-worker-type=spot \
    --region=us-central1

예시 3

다음 명령어는 secondary-worker-type 플래그를 사용하여 두 개의 비선점형 보조 작업자로 'cluster3'을 만듭니다.

gcloud dataproc clusters create cluster3 \
    --num-secondary-workers=2 \
    --secondary-worker-type=non-preemptible \
    --region=us-central1
보조 작업자 부팅 디스크 크기를 변경합니다. 기본적으로 모든 보조 작업자는 100GB 또는 기본 작업자 부팅 디스크 크기 중 더 작은 크기로 생성됩니다. 이 디스크 공간은 데이터의 로컬 캐싱에 사용되며 HDFS를 통해 사용할 수 없습니다. 클러스터를 만들 때 gcloud dataproc clusters create --secondary-worker-boot-disk-size 명령어로 기본 디스크 크기를 재정의할 수 있습니다. 클러스터에 보조 작업자가 없는 경우에도 클러스터를 만들 때 플래그를 지정할 수 있습니다. Google Cloud 콘솔에서 클러스터 만들기 요청을 구성할 수 있습니다. Dataproc 클러스터 만들기 페이지의 왼쪽 패널 하단에 있는 동등한 REST 또는 명령줄 링크를 클릭하여 Google Cloud 콘솔에서 동등한 API REST 요청 또는 gcloud 도구 명령어를 실행할 수 있습니다.

보조 작업자로 클러스터 업데이트

클러스터를 업데이트하여 보조 작업자를 추가하거나 삭제하려면 gcloud dataproc clusters update 명령어를 --num-secondary-workers 플래그와 함께 사용합니다.

예시

다음 명령어는 4개의 보조 작업자 (클러스터를 만들 때 지정된 기본 유형 또는 유형)를 사용하도록 example-cluster를 업데이트합니다.

gcloud dataproc clusters update example-cluster \
    --num-secondary-workers=4 \
    --region=us-central1

클러스터에서 모든 보조 작업자 삭제

클러스터에서 보조 작업자를 모두 삭제하려면 --num-secondary-workers0으로 설정하여 gcloud dataproc clusters update 명령어를 사용합니다.

예시

다음 명령어는 'example-cluster'에서 모든 보조 작업자를 삭제합니다.

gcloud dataproc clusters update example-cluster \
    --num-secondary-workers=0 \
    --region=us-central1

REST API

보조 작업자가 포함된 클러스터 만들기

클러스터가 생성될 때 Dataproc clusters.create API를 사용해서 클러스터에 보조 작업자를 추가합니다. 다음 예는 각 보조 작업자 유형(preemptible(기본값), spot(선점 가능), non-preemptible)으로 클러스터를 만드는 방법을 보여줍니다. 추가 필드를 사용하여 스팟을 비선점형 보조 작업자와 혼합할 수 있습니다.

예시 1

다음 POST 요청은 2개의 표준 선점형(기본 유형) VM 작업자가 있는 'cluster1'을 만듭니다.


POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters

{
  "clusterName": "cluster1",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2
    }
  }
}
예시 2

다음 POST 요청은 스팟(선점형) VM 작업자 두 개가 있는 'cluster2'를 만듭니다.


POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters

{
  "clusterName": "cluster2",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2,
      "preemptibility": "SPOT"
    }
  }
}

예시 3

다음 POST 요청은 2개의 비선점형 보조 작업자로 'cluster3'을 만듭니다.


POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters

{
  "clusterName": "cluster3",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2,
      "preemptibility": "NON_PREEMPTIBLE"
    }
  }
}

보조 작업자로 클러스터 업데이트

Dataproc clusters.patch API를 사용하여 보조 작업자를 추가 및 삭제합니다.

예시

다음 PATCH 요청은 보조 작업자 4명(클러스터를 만들 때 지정된 기본 유형 또는 유형)을 포함하도록 클러스터를 업데이트합니다.


PATCH /v1/projects/project-id/regions/region/clusters/cluster-name?updateMask=config.secondary_worker_config.num_instances
{
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 4
    }
  }
}
Google Cloud 콘솔에서 클러스터 만들기 요청을 구성할 수 있습니다. Dataproc 클러스터 만들기 페이지의 왼쪽 패널 하단에 있는 동등한 REST 또는 명령줄 링크를 클릭하여 Google Cloud 콘솔에서 동등한 API REST 요청 또는 gcloud CLI 명령어를 작성할 수 있습니다.

보조 작업자 문제 해결

  • 서비스 계정 권한 문제: 보조 작업자는 관리형 인스턴스 그룹을 통해 생성됩니다. 권한 문제가 있는 경우 Dataproc 로그에는 보조 작업자 생성 실패가 보고되지 않지만 실패한 작업자는 Google Cloud 콘솔의 클러스터 세부정보 페이지에 있는 VM 인스턴스 탭에 녹색 체크표시 없이 나열됩니다. 목록을 보려면 Dataproc 클러스터 페이지를 연 다음 클러스터 이름을 클릭하여 클러스터의 클러스터 세부정보 페이지를 엽니다.

  • 관리형 인스턴스 그룹 권한 문제: 관리형 인스턴스 그룹 권한에 문제가 있는지 확인하려면 다음 안내를 따르세요.

    1. 관리형 인스턴스 그룹 이름(instanceGroupManagerName)을 찾습니다.

      콘솔

      1. Dataproc 클러스터 페이지를 연 다음 클러스터 이름을 클릭하여 클러스터의 클러스터 세부정보 페이지를 엽니다.
      2. 페이지 하단에서 동등한 REST를 클릭한 후 config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName 값을 봅니다.

      Google Cloud CLI

      --format 플래그와 함께 gcloud dataproc clusters describe 명령어를 실행하여 instanceGroupManagerName을 표시합니다.
      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION \
          --format='value(config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName)'
      

      REST API

      config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName 값을 반환하는 clusters.get 요청을 제출합니다.
    2. 로그 탐색기에서 로그를 봅니다.
    • Google Compute Engine Instance Group 리소스 유형을 선택하고 관리형 인스턴스 그룹 이름을 필터링합니다.

    • 또는 `resource.type="gce_instance_group" 및 resource.labels.instance_group_name=INSTANCE_GROUP_MANAGER_NAME에 로깅 필터를 적용할 수 있습니다.

비선점형 보조 작업자와 스팟 혼합

Dataproc 클러스터를 만들 때 스팟 작업자와 비선점형 보조 작업자를 혼합하여 지정할 수 있습니다.

스팟과 비선점형 보조 작업자를 혼합하는 보조 작업자 설정

Dataproc 클러스터를 만들 때 다음 보조 작업자 설정을 사용하여 스팟 VM을 사용할 수 있을 때 용량을 늘릴 수 있는 최소 수준의 보조 작업자 용량을 확보합니다.

  • 보조 작업자 수: 프로비저닝할 총 보조 작업자 수입니다.

  • 보조 작업자 유형: spot는 스팟을 비선점형 보조 작업자와 혼합할 때의 보조 작업자 유형입니다.

  • standardCapacityBase: 프로비저닝할 비선점형 (표준) 보조 작업자 수입니다. 비선점형 보조 작업자는 다른 유형의 보조 작업자보다 먼저 프로비저닝됩니다.

  • standardCapacityPercentAboveBase: standardCapacityBase개의 보조 작업자가 채워진 후 요청된 총 보조 작업자 수를 충족하는 데 필요한 나머지 보조 작업자 수는 다음과 같이 비선점형 VM과 스팟 VM을 혼합하여 채웁니다.

    • standardCapacityPercentAboveBase: 선점 불가능한 VMS로 채울 나머지 보조 작업자의 비율입니다.
    • 요청된 총 보조 작업자 수를 충족하는 데 필요한 나머지 수는 스팟 VM으로 채워집니다.

예:

  • 보조 작업자 수: 15명
  • standardCapacityBase: 5
  • standardCapacityPercentAboveBase 30%

결과:

  • 선점 불가: 8 = 5 (standardCapacityBase) + 3 (남은 10개의 30%)
  • 자리: 7 (남은 10개의 70%)
  • 총계 = 15

스팟 및 비선점형 보조 작업자가 혼합된 클러스터 만들기

클러스터를 만들 때 gcloud CLI 또는 Dataproc API를 사용하여 스팟과 선점 불가능한 보조 작업자를 혼합할 수 있습니다.

gcloud

로컬 또는 Cloud Shell에서 다음 명령어를 실행하여 스팟 및 비선점형 보조 작업자가 혼합된 클러스터를 만듭니다.

gcloud dataproc clusters create CLUSTER_NAME \
    --project=PROJECT_ID \
    --region=REGION \
    --secondary-worker-type=spot \
    --num-secondary-workers=NUMBER_SECONDARY_WORKERS \
    --secondary-worker-standard-capacity-base=STANDARD_CAPACITY_BASE \
    --secondary-worker-standard-capacity-percent-above-base=STANDARD_CAPACITY_PERCENT_ABOVE_BASE \
    OTHER_FLAGS_AS_NEEDED

참고:

  • CLUSTER_NAME: 새 클러스터의 이름
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다. 프로젝트 ID는 Google Cloud 콘솔 대시보드프로젝트 정보 섹션에 나열됩니다.
  • REGION: 워크로드를 실행하는 데 사용할 수 있는 Compute Engine 리전입니다.
  • --secondary-worker-type: 스팟과 비선점형 보조 작업자를 혼합하는 경우 보조 작업자 유형을 spot로 지정합니다.
  • STANDARD_CAPACITY_BASESTANDARD_CAPACITY_PERCENT_ABOVE_BASE: 스팟과 비선점형 보조 작업자를 혼합하는 보조 작업자 설정을 참고하세요.
  • OTHER_FLAGS_AS_NEEDED: gcloud dataproc clusters create를 참고하세요.

API

스팟을 선점 불가능한 보조 워커와 혼합하려면 다음 JSON 샘플과 같이 Dataproc preemptibility, standardCapacityBase, standardCapacityPercentAboveBase API 필드를 cluster.create 요청의 일부로 설정합니다.

{
  "clusterName": "CLUSTER_NAME",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 15,
      "preemptibility": "spot",
      "instanceFlexibilityPolicy": {
        "provisioningModelMix": {
          "standardCapacityBase": STANDARD_CAPACITY_BASE
          "standardCapacityPercentAboveBase": STANDARD_CAPACITY_PERCENT_ABOVE_BASE
        }
      }
    }
  }
}

참고:

보조 작업자 믹싱과 가변형 VM 결합

클러스터를 만들 때 스팟과 비선점형 보조 작업자를 혼합하고 보조 작업자에 가변형 VM 셰이프를 지정할 수 있습니다.

gcloud CLI 예시:

gcloud dataproc clusters create cluster-name \
    --project=project-id \
    --region=us-cdbtral1 \
    --secondary-worker-type=spot \
    --num-secondary-workers=15 \
    --secondary-worker-standard-capacity-base=5 \
    --secondary-worker-standard-capacity-percent-above-base=30 \
    --secondary-worker-machine-types="type=n2-standard-8,rank=0" \
    --secondary-worker-machine-types="type=e2-standard-8,type=t2d-standard-8,rank=1"
    ...other flags as needed

보조 작업자 혼합 특성

이 섹션에서는 스팟과 선점 불가능한 보조 작업자 믹싱과 관련된 일부 동작과 특성을 설명합니다.

보조 작업자 환경설정

Dataproc은 보조 작업자에서 애플리케이션을 예약할 때 스팟 VM 또는 비선점형 VM 중 어느 쪽도 우선하지 않습니다.

보조 작업자 확장

자동 확장 또는 수동 확장을 통해 보조 작업자를 확장하면 Dataproc은 보조 작업자를 추가할 때 요청된 스팟-비선점형 비율을 유지합니다.

보조 작업자 조합 설정 업데이트

Dataproc 클러스터를 만들 때 스팟 및 비선점형 보조 작업자의 조합을 지정합니다. 클러스터를 만든 후에는 보조 작업자 조합 설정을 변경할 수 없습니다.

스팟 보조 작업자 선점

  • Dataproc는 스팟 VM 선점 시점을 제어하지 않습니다 (스팟 VM 선점 참고).
  • 스팟 선점이 발생하면 Compute Engine에서 선점된 VM을 다시 프로비저닝할 때까지 보조 워커 그룹이 일시적으로 감소된 용량으로 실행될 수 있습니다.
  • Dataproc는 그룹의 초기 설정을 초과하는 용량을 보조 작업자 그룹에 추가하지 않습니다.