선점형 VM

표준 Compute Engine 가상 머신(VM) 사용 외에 Dataproc 클러스터는 선점형 VM이라고도 하는 선점형 VM 인스턴스를 사용할 수 있습니다. 선점형 작업자가 Google Cloud에서 다른 작업에 필요하면 회수(클러스터에서 삭제)됩니다. 선점형 작업자가 삭제될 가능성으로 인해 작업 안정성에 영향을 줄 수 있지만 중요하지 않은 데이터 처리에 대한 시간당 컴퓨팅 비용을 낮추거나 대규모 클러스터를 낮은 총 비용으로 만들기 위해 선점형 인스턴스를 사용하도록 결정할 수 있습니다. 자세한 내용은 Dataproc 가격 책정 문서를 참조하세요.

Dataproc에서의 선점형 작동 방법

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

Google Cloud에서 다른 작업에 선점형 작업자가 필요하면 선점형 작업자가 회수됩니다. 선점형 작업자는 용량이 허용될 때 클러스터에 다시 추가됩니다. 예를 들어 선점형 머신 2대를 회수하고 클러스터에서 삭제한 경우, 이를 다시 추가할 수 있는 용량이 있을 때 해당 인스턴스가 클러스터에 다시 추가됩니다.

다음 규칙은 Dataproc 클러스터의 선점형 및 비선점형 모든 보조 작업자에 적용됩니다.

  • 처리만— 보조 작업자가 데이터를 저장하지 않습니다. 처리 노드 기능만 수행합니다.

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

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

클러스터에서 선점형 사용

Dataproc API 요청을 통해, Cloud SDK gcloud 명령줄 도구를 사용하거나 Google Cloud Console에서 클러스터를 만들 때 보조 작업자의 수와 유형(선점형 또는 비선점형)을 지정할 수 있습니다.

참고

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

gcloud 명령

gcloud dataproc clusters create 명령어를 사용하여 클러스터 생성 시 클러스터에 선점형 인스턴스를 추가할 수 있습니다. 클러스터가 생성된 후 gcloud dataproc clusters update 명령어를 사용하여 클러스터에 선점형 인스턴스를 추가하거나 클러스터에서 선점형 인스턴스를 삭제할 수 있습니다.

선점형 작업자로 클러스터 만들기

선점형 작업자가 포함된 클러스터를 만들려면 gcloud dataproc clusters create 명령어에 --num-secondary-workers 인수를 사용하세요. 보조 작업자는 기본적으로 선점형이지만 --secondary-worker-type=non-preemptible을 설정하여 클러스터를 만들 때 비선점형 보조 작업자를 추가할 수 있습니다(예시 2 참조).

예시 1

다음 명령어는 선점형 작업자 2개가 포함된 'my-test-cluster'라는 클러스터를 만듭니다.

gcloud dataproc clusters create my-test-cluster \
    --num-secondary-workers=2 \
    --region=us-central1
...
Waiting on operation [operations/projects/project-id/operations/...].
clusterName: my-test-cluster
  ...
secondaryWorkerConfiguration:
    - dataproc-1-sw-2skd
    - dataproc-1-sw-l20p
    isPreemptible: true
...

예시 2

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

gcloud dataproc clusters create my-test-cluster \
    --num-secondary-workers=2 \
    --secondary-worker-type=non-preemptible \
    --region=us-central1

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

클러스터를 업데이트하여 보조 작업자를 추가하거나 삭제하려면 gcloud dataproc clusters update 명령어에 --num-secondary-workers 인수를 사용하세요.

예시

다음 명령어는 보조 작업자 2개를 사용하도록 'my-test-cluster'라는 클러스터를 업데이트합니다.

gcloud dataproc clusters update my-test-cluster \
    --num-secondary-workers=2 \
    --region=us-central1
...
Waiting on operation [operations/projects/project-id/operations/...].
Waiting for cluster update operation...done.
Updated [https://dataproc.googleapis.com/...].
clusterName: my-test-cluster
  ...
secondaryWorkerConfiguration:
    - dataproc-1-sw-2skd
    - dataproc-1-sw-l20p
    isPreemptible: true
...

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

클러스터에서 보조 작업자를 모두 삭제하려면 gcloud dataproc clusters update 명령어를 0으로 설정된 --num-secondary-workers와 함께 사용하세요.

예시

다음 명령어는 클러스터에서 보조 작업자를 모두 삭제합니다.

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

REST API

선점형 작업자로 클러스터 만들기

클러스터가 생성될 때 Dataproc clusters.create API를 사용해서 클러스터에 선점형 작업자를 추가합니다. 보조 작업자는 기본적으로 선점형이지만, 예시 2와 같이 비선점형 보조 작업자를 클러스터에 추가할 수 있습니다.

예시 1

다음 POST 요청은 선점형 작업자 2개가 포함된 클러스터를 만듭니다.


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

{
  "clusterName": "cluster-name",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2
    }
  }
}

예시 2

다음 POST 요청은 비선점형 보조 작업자 두 개로 클러스터를 만듭니다.


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

{
  "clusterName": "cluster-name",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2,
      "preemptibility": "NON_PREEMPTIBLE"
    }
  }
}

선점형 인스턴스가 포함된 클러스터 업데이트

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

예시

다음 PATCH 요청은 보조 작업자 2개를 포함하도록 클러스터를 업데이트합니다.


PATCH /v1/projects/project-id/regions/region/clusters/cluster-name?updateMask=config.secondary_worker_config.num_instances
{
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2
    }
  }
}

콘솔

Cloud Console에서 Dataproc 클러스터를 만들 때 선점형 작업자 수를 지정할 수 있습니다. 클러스터가 생성된 후 Cloud Console에서 클러스터 구성을 수정하여 선점형 작업자를 추가하거나 삭제할 수 있습니다.

선점형 인스턴스가 포함된 클러스터 만들기

Cloud Console에서 Dataproc 클러스터 만들기 페이지의 확장 가능한 패널인 '선점형 작업자, 버킷, 네트워크, 버전, 초기화, 액세스 옵션'을 엽니다.

노드 필드에 양수를 지정하여 새 클러스터에 선점형 작업자를 추가합니다.

선점형 인스턴스가 포함된 클러스터 업데이트

클러스터가 생성된 후 클러스터 세부정보 페이지의 구성 탭에서 수정 버튼을 클릭하여 클러스터의 선점형 작업자 수를 수정할 수 있습니다.

선점형 작업자 수를 변경하려면 선점형 워커 노드 필드에 새 값을 지정합니다.

클러스터에서 모든 선점형 인스턴스 삭제

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