클러스터 및 작업 유연성과 효율성 극대화
이 페이지에서는 Google Cloud 리전에서 리소스 가용성을 극대화하고, 프로비저닝 지연을 줄이고, 성능 및 비용 최적화를 활용하는 복원력 있는 Managed Service for Apache Spark 클러스터를 설계하는 데 도움이 되는 권장사항과 예약 전략을 제공합니다.
리소스 획득 가능성 개요
경직된 Managed Service for Apache Spark 클러스터에서 작업을 실행하면 단일 실패 지점이 발생하여 국지적인 비가용성 또는 프로비저닝 지연으로 인해 작업 중단과 클러스터 및 작업 실패가 발생할 수 있습니다.
다음과 같은 엄격한 안티패턴으로 구성된 클러스터는 리소스를 사용할 수 없게 될 위험이 높습니다.
- 고정 영역 배치: Managed Service for Apache Spark AutoZone이 클러스터를 최적의 영역에 동적으로 배치하도록 허용하는 대신
zone플래그 또는 필드를 사용하여 단일 영역을 하드코딩합니다. 이 안티패턴은 클러스터 생성 시 인접 영역에서 사용 가능한 컴퓨팅 리소스를 사용하지 못하게 합니다. - 노드 역할당 단일 머신 유형 또는 세대: 노드 역할을 단일 머신 세대 또는 유형으로 제한합니다. 이 안티패턴은 클러스터가 대체 항목으로 대체되는 것을 방지합니다.
- 우선순위가 가장 높은 머신 계열이 너무 적음: 대체 순위가 정의된 경우에도 가변형 VM 정책의 0순위에 머신 계열을 하나 또는 두 개만 나열합니다. 이 안티패턴은 Managed Service for Apache Spark가 먼저 가져올 수 있는 리소스 풀을 좁혀 하위 순위로 대체되거나 프로비저닝이 지연될 가능성을 높입니다.
- 대형 VM을 줄여 수직 확장: 클러스터를 수직 확장하여 소수의 대형 VM 형태를 사용합니다. 이 안티패턴은 예약 유연성을 제한합니다.
- 전체 또는 부분 클러스터 생성: 자동 확장과 함께 부분 클러스터 생성을 사용하는 대신 모든 워커 노드를 동시에 프로비저닝해야 합니다. 이 안티패턴은 일시적인 리소스 사용 불가로 인해 워커 노드를 할당할 수 없는 경우 클러스터 생성이 실패하게 만듭니다.
- 최대 예약 급증: 최대 사용 시간 중에 대규모 일괄 파이프라인을 트리거하여 리전 경합을 증가시킵니다.
리소스 확보 가능성은 하드웨어 유연성, 멀티 영역, 확장성을 갖추도록 작업을 설계하는 방식입니다. 엄격한 구성에서 클러스터를 분리하고 멀티 머신 계열 대체 기능을 사용 설정하면 생성 성공률을 높이고 시작 지연 시간을 최소화하며 SLA를 일관되게 달성할 수 있습니다.
리소스 확보 가능성 권장사항
리소스 가용성과 작업 안정성을 개선하려면 다음 최적화를 채택하세요.
가변형 VM 사용
가변형 VM 기능을 사용하면 마스터, 기본, 보조 워커 노드에 대해 순위가 지정된 VM 유형 목록을 지정할 수 있습니다. 이렇게 하면 나열된 VM 유형을 평가하고 사용 가능한 용량이 있는 영역을 자동으로 선택하여 생성 성공률을 높일 수 있습니다.
권장사항: 디스크 재정의가 있는 가변형 VM을 사용합니다. 이를 통해 동일한 클러스터 정책에서 서로 다른 후보 머신 계열에 대해 하이퍼디스크 및 영구 디스크와 같은 다양한 디스크 유형을 지정할 수 있습니다. 또한 단일 정책 내에서 2세대 및 4세대 머신 계열을 혼합하여 더 광범위한 풀에서 작업을 확장하고 용량 한도를 우회할 수 있습니다.
순위 0에서 서로 다른 머신 계열을 3개 이상 지정합니다. Managed Service for Apache Spark는 우선순위가 가장 높은 (순위 0) 목록에서 먼저 가져오므로 순위 0이 넓으면 클러스터 생성 시 가장 큰 후보 리소스 풀이 제공된 후 낮은 순위로 대체됩니다. 순위 0에서 Gen4 및 Gen2 제품군을 결합하는 것이 이 풀을 확장하는 가장 효과적인 방법입니다.
범용 워크로드(예: 현재 N2 또는 N2D 머신에서 실행 중인 작업)의 경우 다음 순위를 사용합니다.
- 순위 0: N4, N4D (Hyperdisk Balanced 포함), N2, N2D
- 순위 1: C4, C4D (Hyperdisk Balanced 포함), C2D 로컬 SSD는 C4 및 C4D와 함께 사용할 수 있지만 일반적으로 8개 또는 16개 코어는 1~2개의 로컬 SSD만 지원합니다.
- 순위 2: E2 (성능이 낮음, 필요한 경우에만 사용)
예를 들어 n2d-standard-16를 사용하는 작업의 순위는 다음과 같습니다.
- 순위 0:
n4-standard-16,n4d-standard-16,n2-standard-16,n2d-standard-16 - 1위:
c4-standard-16,c4d-standard-16,c2d-standard-16 - 2위:
e2-standard-16
N4 및 N4D에는 Hyperdisk가 필요하고 N2 및 N2D에는 영구 디스크가 사용되므로 순위 0을 동일한 순위를 공유하지만 다른 diskConfig 값을 사용하는 두 개의 인스턴스 선택으로 정의합니다. 예를 들어 다음 gcloud dataproc clusters create 플래그는 앞의 예시에 대한 기본 워커 정책을 정의합니다.
gcloud dataproc clusters create CLUSTER_NAME \
--region=REGION \
--zone="" \
--num-workers=NUM_WORKERS \
--worker-instance-selection='{"machineTypes":["n4-standard-16","n4d-standard-16"],"rank":0,"diskConfig":{"bootDiskType":"hyperdisk-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}' \
--worker-instance-selection='{"machineTypes":["n2-standard-16","n2d-standard-16"],"rank":0,"diskConfig":{"bootDiskType":"pd-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}' \
--worker-instance-selection='{"machineTypes":["c4-standard-16","c4d-standard-16"],"rank":1,"diskConfig":{"bootDiskType":"hyperdisk-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}' \
--worker-instance-selection='{"machineTypes":["c2d-standard-16"],"rank":1,"diskConfig":{"bootDiskType":"pd-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}' \
--worker-instance-selection='{"machineTypes":["e2-standard-16"],"rank":2,"diskConfig":{"bootDiskType":"pd-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}'
가변형 VM을 사용할 때는 다음 요소를 고려하세요.
혼합 디스크 유형 지원: 3세대 및 4세대 머신 유형은 Hyperdisk 디스크 유형만 지원하고 Persistent Disk 유형은 지원하지 않습니다. Gen2와 Gen4를 혼합할 때는
instanceFlexibilityPolicy의 각 인스턴스 선택에 대해diskConfig를 지정합니다. 자세한 내용은 디스크 재정의를 참조하세요.- Hyperdisk Balanced 기본 성능에 지정된 IOPS 및 처리량의 기준값과 함께 Hyperdisk Balanced를 사용합니다.
리소스 할당량: 대체 유형으로 가변형 VM 정책을 정의하면 Compute Engine은 리전의 모든 후보 유형 및 디스크에 대한 할당량을 확인합니다. 프로젝트에 구성된 모든 항목에 충분한 컴퓨팅 및 디스크 할당량이 할당되어 있는지 확인합니다.
Compute Engine 할인: 가변형 약정 사용 할인(CUD)을 활용하여 여러 VM 계열과 리전에 걸쳐 지출 기반 절감을 적용합니다.
가격 책정: Google Cloud 가격 계산기를 사용하여 정책의 각 순위에 대한 비용을 비교합니다.
구성 템플릿 및 배포 예시는 다음을 참조하세요.
자동 영역 배치 사용
AutoZone 배치를 사용하여 Managed Service for Apache Spark가 리소스를 프로비저닝할 최적의 영역을 선택하도록 합니다. 커스텀 가상 프라이빗 클라우드 (VPC) 네트워크를 사용하는 경우 서브넷에 모든 리전 영역에서 충분한 IP 주소가 있는지 확인합니다.
작은 머신 유형 사용
더 큰 VM으로 수직 확장하는 대신 더 작은 머신 유형 (4, 8 또는 16개 코어)에서 수평 확장하도록 작업을 설계합니다. VM 크기가 작을수록 영역 간 가용성이 높아져 생성 지연을 방지할 수 있습니다.
- 드라이버 노드에 대형 머신 유형을 사용하는 작업을 검토하고 재설계합니다.
- 워커 노드 없이 드라이버 노드만 실행하는 작업 (단일 노드 클러스터)을 검토합니다. 단일 노드 클러스터에서 실행되는 작업은 동적으로 확장할 수 없으며 실행을 단일 물리적 호스트에 바인딩합니다.
클러스터 자동 확장 사용
리소스 변동성 (급증)이 있는 작업의 용량을 관리하려면 충분한 최대 인스턴스 수로 클러스터 자동 확장을 사용합니다.
자동 확장을 사용하여 부분 클러스터 생성 사용
자동 확장을 사용하여 기본 워커의 최소 수를 지정할 수 있는 부분 클러스터 생성을 사용합니다. 클러스터가 요청된 것보다 적은 수의 작업자로 시작하는 경우 리소스를 사용할 수 있게 되면 자동 확장을 통해 작업자를 동적으로 더 추가할 수 있습니다.
사용량이 적은 시간대에 작업 예약
정오, 주말 등 사용량이 적은 시간대에 작업을 예약합니다. 예약 급증을 방지하려면 표준 시간이 아닌 시간(예: 10:00 대신 10:07)으로 예약합니다.
다음 단계
- 가변형 VM으로 VM 유형의 우선순위를 지정하는 방법 알아보기
- AutoZone 배치 구성 방법 알아보기
- 부분 클러스터를 만드는 방법 알아보기
- 자동 확장 정책 구성 방법 알아보기
- 약정 사용 할인 자세히 알아보기