고가용성 클러스터 만들기

이 문서에서는 고가용성 (HO) 모드에서 Managed Service for Apache Spark 클러스터를 만드는 방법을 설명합니다. 높은 획득 가능성 모드는 클러스터를 만들 때 고정된 머신 유형을 요구하는 대신 Managed Service for Apache Spark가 호환되는 머신 유형 중에서 선택할 수 있도록 허용하여 수요가 많거나 리소스 제약이 있는 기간에 클러스터 VM을 성공적으로 프로비저닝할 가능성을 높입니다.

높은 획득 가능성 모드를 사용하여 범용 컴퓨팅 요구사항이 있는 클러스터를 만들어 VM을 사용할 수 없어 클러스터 생성 및 확장 실패를 방지합니다.

높은 획득 가능성 모드 작동 방식

표준 클러스터 생성 요청에서는 클러스터 노드에 특정 머신 유형 (예: n2-standard-4)을 지정합니다. 영역에서 특정 머신 유형을 사용할 수 없는 경우 생성 요청이 실패합니다.

높은 가용성 모드에서는 고정된 머신 유형 대신 마스터, 기본 워커, 보조 워커 노드에 대한 가변형 리소스 요구사항을 지정합니다.

  • vCPU 코어 수: VM 인스턴스당 vCPU의 목표 수(2, 4, 8, 16 또는 32개 코어)를 요청합니다.
  • 하드웨어 클래스: 성능 및 메모리 프로필을 지정합니다.

    • STANDARD: vCPU당 약 4GB의 메모리와 표준 영구 스토리지 등급으로 균형 잡힌 구성을 제공합니다. 현재 후보 머신 유형에는 n4-standard, n4d-standard, n2-standard, n2d-standard (0순위 환경설정), c4-standard, c4d-standard (1순위 환경설정)가 포함됩니다.
    • PERFORMANCE: vCPU당 약 8GB의 메모리와 상위 등급 디스크 구성 (더 높은 IOPS 및 처리량)을 갖춘 고성능 구성을 제공합니다. 현재 후보 머신 유형에는 n4-highmem, n4d-highmem, n2-highmem, n2d-highmem (순위 0 환경설정), c4-highmem, c4d-highmem(순위 1 환경설정)가 포함됩니다.
  • 인스턴스 수: 각 그룹의 인스턴스 수를 지정합니다.

    • 마스터: 인스턴스 1개여야 합니다.
    • 기본 워커: 양의 정수
    • 보조 작업자: 음수가 아닌 정수입니다.
  • 부팅 디스크 크기: 선택적 부팅 디스크 크기 (예: 100GB)입니다.

Managed Service for Apache Spark는 자동 영역 배치를 자동으로 사용하여 클러스터 리전 전반의 영역을 평가하고 요청된 하드웨어 클래스 내에서 사용 가능한 용량이 있는 후보 머신 유형을 선택합니다.

요구사항 및 제한사항

높은 획득 가능성 모드에는 다음과 같은 요구사항 및 제한사항이 있습니다.

  • 리소스 할당량: 프로젝트에는 선택한 하드웨어 클래스 (N4, N4D, N2, N2D, C4, C4D)의 모든 후보 머신 계열에 대해 클러스터 리전에 충분한 Compute Engine 리소스 할당량이 있어야 합니다. 기본 후보 머신 유형은 Google에서 제어하며 언제든지 변경될 수 있으므로 특정 머신 유형에 종속되지 마세요.
  • 영역 사양: 명시적인 --zone (또는 zoneUri)을 지정할 수 없습니다. Managed Service for Apache Spark는 자동 영역 배치를 사용하여 리전에서 사용 가능한 영역을 자동으로 선택합니다.
  • 고정 머신 및 노드 구성과의 상호 배타성:
    • 유연한 구성 (--master-flexible-config, --worker-flexible-config 또는 --secondary-worker-flexible-config)으로 마스터, 기본 워커 또는 보조 워커 노드 그룹을 구성할 때는 해당 노드 그룹에 대해 표준 머신 유형, 인스턴스 선택, 인스턴스 수, 디스크 또는 가속기 플래그를 지정할 수 없습니다.
      • 마스터: --master-machine-type, --master-machine-types, --master-instance-selection, --master-instance-flexibility-policy-file, --master-boot-disk-size, --master-boot-disk-type, --num-master-local-ssds, --master-accelerator 또는 --master-min-cpu-platform와 결합할 수 없습니다.
      • 기본 워커: --num-workers, --worker-machine-type, --worker-machine-types, --worker-instance-selection, --worker-instance-flexibility-policy-file, --worker-boot-disk-size, --worker-boot-disk-type, --num-worker-local-ssds, --worker-accelerator 또는 --worker-min-cpu-platform와 결합할 수 없습니다.
      • 보조 작업자: --num-secondary-workers, --secondary-worker-type, --secondary-worker-machine-types, --secondary-worker-instance-selection, --secondary-worker-instance-flexibility-policy-file, --secondary-worker-boot-disk-size, --secondary-worker-boot-disk-type, --num-secondary-worker-local-ssds 또는 --secondary-worker-accelerator와 결합할 수 없습니다.
    • 멀티 노드 클러스터에서 마스터 노드 그룹에 고가용성 모드가 사용 설정된 경우 기본 워커 노드 그룹도 가변형 구성 (--worker-flexible-config)을 사용해야 합니다.
    • 보조 작업자가 고가용성 클러스터에서 사용되는 경우 표준 보조 작업자 플래그가 아닌 --secondary-worker-flexible-config를 사용해야 합니다.
  • 단일 노드 클러스터: 단일 노드 클러스터(--single-node 또는 --cluster-type=single-node)에서는 --master-flexible-config만 지정할 수 있습니다. 기본 및 보조 작업자 가변형 구성 플래그는 지원되지 않습니다.
  • 클러스터 업데이트: gcloud dataproc clusters update를 사용하여 기본 및 보조 작업자의 인스턴스 수(num-instances)를 업데이트할 수 있습니다. 코어 수, 하드웨어 클래스, 부팅 디스크 크기는 생성 시 사양이며 생성 후에는 수정할 수 없습니다.
  • 고가용성 클러스터: 고가용성 (HA) 클러스터 (마스터 노드가 3개인 클러스터)는 고가용성 모드에서 지원되지 않습니다. 마스터 인스턴스 수는 1개여야 합니다.

고가용성 클러스터 만들기

Google Cloud CLI 또는 Dataproc API를 사용하여 고가용성 모드로 클러스터를 만들 수 있습니다.

gcloud

고가용성 모드에서 클러스터를 만들려면 --master-flexible-config 및 --worker-flexible-config 플래그와 함께 gcloud dataproc clusters create 명령어를 실행합니다.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --master-flexible-config="cores=CORES,hardware-class=HARDWARE_CLASS,num-instances=1,boot-disk-size=BOOT_DISK_SIZE" \
    --worker-flexible-config="cores=CORES,hardware-class=HARDWARE_CLASS,num-instances=NUM_WORKERS,boot-disk-size=BOOT_DISK_SIZE"

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • REGION: 클러스터의 Compute Engine 리전입니다(예: us-central1). --zone를 지정하지 마세요.
  • CORES: VM 인스턴스당 vCPU 수입니다. 2의 거듭제곱 (2, 4, 8, 16, 32)이어야 합니다.
  • HARDWARE_CLASS: 하드웨어 프로필 클래스(STANDARD 또는 PERFORMANCE).
  • NUM_WORKERS: 클러스터의 기본 워커 노드 수입니다.
  • BOOT_DISK_SIZE: 부팅 디스크의 크기(예: 100GB)

보조 작업자 추가

높은 가용성 모드에서 보조 워커 노드를 추가하려면 --secondary-worker-flexible-config 플래그를 포함합니다.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --master-flexible-config="cores=4,hardware-class=STANDARD,num-instances=1,boot-disk-size=100GB" \
    --worker-flexible-config="cores=4,hardware-class=STANDARD,num-instances=2,boot-disk-size=100GB" \
    --secondary-worker-flexible-config="cores=4,hardware-class=STANDARD,num-instances=2,boot-disk-size=100GB"

단일 노드 클러스터 만들기

단일 노드 고가용성 클러스터를 만들려면 --master-flexible-config과 함께 --single-node (또는 --cluster-type=single-node)를 지정하고 작업자 가변 구성 플래그를 생략합니다.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --single-node \
    --master-flexible-config="cores=4,hardware-class=STANDARD,boot-disk-size=100GB"

클러스터 작업자 용량 업데이트

기존 고가용성 클러스터에서 기본 또는 보조 작업자 수를 확장하려면 gcloud dataproc clusters update 명령어를 사용합니다.

gcloud dataproc clusters update CLUSTER_NAME \
    --region=REGION \
    --worker-flexible-config="num-instances=NEW_NUM_WORKERS"

REST

REST API를 사용하여 고가용성 클러스터를 만들려면 clusters.create 요청을 전송합니다. ClusterConfig 객체에서 다음을 수행합니다.

  1. 자동 영역 배치를 사용 설정하려면 gceClusterConfig.zoneUri를 비워두거나 생략합니다.
  2. masterFlexibleConfig 및 workerFlexibleConfig 객체를 지정합니다.

HTTP 메서드 및 URL:

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

JSON 요청 본문:

{
  "projectId": "PROJECT_ID",
  "clusterName": "CLUSTER_NAME",
  "config": {
    "gceClusterConfig": {
      "zoneUri": ""
    },
    "masterFlexibleConfig": {
      "numInstances": 1,
      "coreCount": 4,
      "hardwareClass": "STANDARD",
      "bootDiskSizeGb": 100
    },
    "workerFlexibleConfig": {
      "numInstances": 2,
      "coreCount": 4,
      "hardwareClass": "STANDARD",
      "bootDiskSizeGb": 100
    }
  }
}

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • REGION: 클러스터가 생성될 Compute Engine 리전(예: us-central1)입니다.
  • CLUSTER_NAME: 클러스터의 이름입니다.

선택사항: 보조 작업자를 추가하려면 원하는 numInstances, coreCount, hardwareClass, bootDiskSizeGb과 함께 secondaryWorkerFlexibleConfig 객체를 포함합니다.

다음 단계