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개를 선택한 경우 3개 모두 Spot VM이거나, 3개 모두 (표준) 선점형 VM이거나, 3개 모두 비선점형으로 지정할 수 있지만, 각기 다른 유형으로 지정할 수는 없습니다.

스팟 VM은 최신 유형의 Compute Engine 선점형 VM입니다. 표준 선점형 VM의 저렴한 가격 모델을 공유하지만 최대 수명이 24시간인 표준 선점형 VM과 달리 스팟 VM에는 최대 수명이 없습니다. 스팟 및 표준 선점형 VM 작업자는 모두 Google Cloud에서 다른 작업에 필요로 하는 경우 회수되고 Dataproc 클러스터에서 삭제됩니다.

선점형 작업자

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

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

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

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

비선점형 작업자

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

보조 작업자 사용

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

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

콘솔

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

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

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

보조 인스턴스가 포함된 클러스터 업데이트

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

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

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

gcloud 명령어

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

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

보조 작업자가 포함된 클러스터를 만들려면 gcloud dataproc clusters create 명령어를 --num-secondary-workers 인수와 함께 사용합니다. 보조 작업자는 기본적으로 표준 선점형 VM입니다. 클러스터를 만들 때 --secondary-worker-type=non-preemptible을 설정하여 비선점형 보조 작업자를 지정할 수 있습니다(보조 작업자 유형을 지정하는 데 dataproc:secondary-workers.is-preemptible.override 속성이 더 이상 사용되지 않음).

예시 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

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

클러스터를 업데이트하여 보조 작업자를 추가하거나 삭제하려면 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를 사용해서 클러스터에 보조 작업자를 추가합니다. 보조 작업자는 기본적으로 표준 선점형 VM입니다.

예시 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
    }
  }
}

보조 작업자 문제 해결

서비스 계정 권한 문제: 보조 작업자는 관리형 인스턴스 그룹을 통해 생성되며 Compute Engine은 프로젝트의 Google API 서비스 에이전트 서비스 계정을 사용하여 관리형 인스턴스 그룹 작업을 수행합니다. 이 서비스 계정 이름은 다음과 같이 project-id@cloudservices.gserviceaccount.com 형식으로 지정됩니다.

이 서비스 계정에 권한 문제가 있는 경우 Dataproc 로그가 보조 작업자 생성 실패를 보고하지 않지만 실패한 작업자는 녹색 체크 표시 없이 Google Cloud Console 클러스터 세부정보 페이지의 VM 인스턴스 탭 아래에 나열됩니다(Dataproc 클러스터 페이지를 열고 클러스터 이름을 클릭하여 클러스터의 클러스터 세부정보 페이지를 엽니다).

  • 관리형 인스턴스 그룹 권한 문제: 관리형 인스턴스 그룹 권한에 문제가 있는지 확인하려면 로그 탐색기에서 'Google Compute Engine 인스턴스 그룹' 리소스 유형에 대한 로그를 확인하고 해당 인스턴스 그룹 ID를 필터링합니다. 인스턴스 그룹 ID 필터가 dataproc-CLUSTER NAME-sw 형식으로 인스턴스 그룹 이름을 표시하고 인스턴스 그룹 ID가 로깅 쿼리로 자동으로 채워집니다. 드롭다운 필터를 사용하는 대신 resource.type="gce_instance_group"resource.labels.instance_group_name="dataproc-CLUSTER NAME-sw"에 대해 로깅 필터를 적용할 수도 있습니다.

  • 커스텀 이미지 권한 문제: Dataproc 클러스터 VM이 다른 프로젝트에서 가져온 커스텀 이미지로 생성되는 경우 Compute Image User 역할을 프로젝트의 project-id@cloudservices.gserviceaccount.com 서비스 계정에 할당해야 합니다(관리형 인스턴스 그룹에 이미지 액세스 권한 부여 참조). 올바른 역할이 할당되지 않으면 로그에 다음 오류 메시지가 표시됩니다. Required 'compute.images.useReadOnly' permission for 'projects/[IMAGE PROJECT]/global/images/[IMAGE NAME]