멀티 영역 클러스터 만들기

이 문서에서는 Managed Service for Apache Spark 멀티 영역 클러스터를 만드는 방법을 설명합니다. 다중 영역 클러스터에서 Managed Service for Apache Spark는 모든 클러스터 노드를 한 영역에 배치하는 대신 단일 리전의 여러 영역에 클러스터의 Compute Engine VM 인스턴스를 프로비저닝하고 배포합니다.

대규모 클러스터를 만들거나 확장해야 하고 단일 영역의 용량이 요청을 충족하기에 충분하지 않을 수 있는 경우 다중 영역 클러스터를 사용합니다.

다중 영역 클러스터 작동 방법

멀티 영역 클러스터를 만들면 Managed Service for Apache Spark가 다음과 같이 클러스터 노드를 프로비저닝합니다.

  • 마스터 노드: Managed Service for Apache Spark는 자동 영역 배치를 사용하여 클러스터 리전의 단일 영역에 마스터 인스턴스 그룹을 배치합니다.
  • 워커 노드: Managed Service for Apache Spark는 기본 및 보조 워커 그룹을 리전 관리형 인스턴스 그룹 (MIG)으로 구성합니다. 이러한 그룹은 사용 가능한 용량이 있는 리전의 적격 영역에 작업자 VM을 프로비저닝하고 배포합니다.

Managed Service for Apache Spark는 작업자 VM 요청을 여러 영역에 분산하므로 단일 영역의 용량 제약으로 인해 요청이 차단될 가능성이 적습니다. 이렇게 하면 대규모 클러스터, 스팟 VM 또는 선점형 보조 작업자가 있는 클러스터, 수요가 많은 머신 유형을 사용하는 클러스터를 만들거나 확장할 때 ZONE_RESOURCE_POOL_EXHAUSTED 오류를 방지할 수 있습니다.

요구사항 및 제한사항

멀티 영역 클러스터를 만들려면 다음 이미지 버전 중 하나 또는 동일한 이미지 버전 트랙의 이후 버전을 사용해야 합니다.

이미지 버전 트랙 지원되는 최소 이미지 버전
2.2.x 2.2.88
2.3.x 2.3.37
3.0.x 3.0.3

다중 영역 클러스터에는 다음과 같은 제한사항이 있습니다.

  • 동일한 클러스터 생성 요청에서 단일 영역 구성과 멀티 영역 구성을 모두 지정할 수 없습니다.
  • 초기 클러스터 생성 요청에서 기본 워커가 1,000개를 초과하는 멀티 영역 클러스터를 만들 수 없습니다. 워크로드에 기본 워커가 1,000개 넘게 필요한 경우 기본 워커가 1,000개 이하인 클러스터를 만든 후 생성된 클러스터를 확장합니다.

네트워크 데이터 전송 비용

단일 영역 클러스터에서는 모든 VM이 동일한 영역에 있으며, 동일한 영역의 VM 간에 내부 IP 주소를 사용하는 네트워크 트래픽은 무료로 제공됩니다. 다중 영역 클러스터에서 마스터 및 작업자 VM은 동일한 리전의 서로 다른 영역에 있을 수 있습니다. 동일한 리전의 서로 다른 영역에 있는 VM 간의 네트워크 트래픽에는 영역 간 데이터 전송 요금이 발생합니다.

가격 책정에 대한 자세한 내용은 Google Cloud내에서 VM 간 데이터 전송 가격 책정을 참조하세요.

멀티 영역 클러스터 만들기

Google Cloud CLI 또는 Dataproc API를 사용하여 멀티 영역 클러스터를 만들 수 있습니다.

gcloud

다중 영역 클러스터를 만들려면 --multizone 플래그와 함께 gcloud dataproc clusters create 명령어를 실행합니다. --zone 플래그를 지정하지 마세요.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --multizone \
    --image-version=IMAGE_VERSION \
    --master-machine-type=MASTER_MACHINE_TYPE \
    --worker-machine-type=WORKER_MACHINE_TYPE \
    --num-workers=NUM_WORKERS

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • REGION: 클러스터에 사용 가능한 Compute Engine 리전입니다(예: us-central1).
  • IMAGE_VERSION: 멀티 영역 클러스터를 지원하는 이미지 버전입니다(예: 2.3.37-debian12). 자세한 내용은 요구사항 및 제한사항을 참조하세요.
  • MASTER_MACHINE_TYPE: 마스터 노드의 Compute Engine 머신 유형입니다(예: n2-standard-4).
  • WORKER_MACHINE_TYPE: 기본 워커 노드의 Compute Engine 머신 유형입니다(예: n2-standard-4).
  • NUM_WORKERS: 클러스터의 기본 워커 수입니다. 이 값은 1000 이하여야 합니다.

REST

멀티 영역 클러스터를 만들려면 clusters.create 요청을 보냅니다. 요청의 gceClusterConfig 객체에서 zoneUri 필드를 비워두고 multiZoneConfig.targetShape 필드를 ANY로 설정합니다.

HTTP 메서드 및 URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters

JSON 요청 본문:

{
  "projectId": "PROJECT_ID",
  "clusterName": "CLUSTER_NAME",
  "config": {
    "gceClusterConfig": {
      "multiZoneConfig": {
        "targetShape": "ANY"
      }
    },
    "softwareConfig": {
      "imageVersion": "IMAGE_VERSION"
    },
    "masterConfig": {
      "numInstances": 1,
      "machineTypeUri": "MASTER_MACHINE_TYPE"
    },
    "workerConfig": {
      "numInstances": NUM_WORKERS,
      "machineTypeUri": "WORKER_MACHINE_TYPE"
    }
  }
}

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • REGION: 클러스터에 사용 가능한 Compute Engine 리전입니다(예: us-central1).
  • CLUSTER_NAME: 클러스터의 이름입니다.
  • IMAGE_VERSION: 멀티 영역 클러스터를 지원하는 이미지 버전입니다(예: 2.3.37-debian12). 자세한 내용은 요구사항 및 제한사항을 참조하세요.
  • MASTER_MACHINE_TYPE: 마스터 노드의 Compute Engine 머신 유형입니다(예: n2-standard-4).
  • NUM_WORKERS: 클러스터의 기본 워커 수입니다. 이 값은 1000 이하여야 합니다.
  • WORKER_MACHINE_TYPE: 기본 워커 노드의 Compute Engine 머신 유형입니다(예: n2-standard-4).

다음 단계