Dataproc 클러스터 구성

Cloud Data Fusion에서 클러스터 구성은 Dataproc에서 Spark 작업을 실행할 때 데이터 처리 파이프라인이 컴퓨팅 리소스를 활용하는 방식을 정의하는 것을 의미합니다. 이 페이지에서는 클러스터 구성 기본 방법을 설명합니다.

기본 임시 클러스터(권장)

Cloud Data Fusion 파이프라인에는 기본 클러스터를 사용하는 것이 좋습니다.

  • Cloud Data Fusion은 파이프라인 실행 시마다 임시 Dataproc 클러스터를 자동으로 프로비저닝하고 관리합니다. 파이프라인 실행 시작 시에 클러스터를 만든 후 파이프라인 실행이 완료된 후에 삭제합니다.
  • 임시 클러스터의 이점은 다음과 같습니다.
    • 단순성: 클러스터를 수동으로 구성하거나 관리할 필요가 없습니다.
    • 경제성: 파이프라인 실행 중에 사용된 리소스에 대해서만 요금을 지불합니다.

클러스터와 성능을 조정하려면 클러스터 크기 조정을 참조하세요.

정적 클러스터(특정 시나리오의 경우)

다음과 같은 경우에 정적 클러스터를 사용할 수 있습니다.

  • 장기 실행 파이프라인: 지속적으로 또는 장기간 실행되는 파이프라인의 경우 정적 클러스터가 임시 클러스터를 반복적으로 만들고 삭제하는 것보다 경제적일 수 있습니다.
  • 중앙 집중식 클러스터 관리: 조직에서 클러스터 생성 및 관리 정책을 중앙 집중식으로 제어해야 하는 경우 Terraform과 같은 도구와 함께 정적 클러스터를 사용할 수 있습니다.
  • 클러스터 생성 시간: 모든 파이프라인에 새 클러스터를 만드는 데 걸리는 시간이 사용 사례에 실용적이지 않은 경우

하지만 정적 클러스터를 사용하려면 더 많은 수동 구성이 필요하며 클러스터 수명 주기를 직접 관리해야 합니다.

정적 클러스터를 사용하려면 Dataproc 클러스터에서 다음 속성을 설정해야 합니다.

dataproc:dataproc.conscrypt.provider.enable=false

정적 클러스터의 클러스터 구성 옵션

정적 클러스터를 사용하는 경우 Cloud Data Fusion은 다음 측면에 대한 구성 옵션을 제공합니다.

  • 작업자 머신 유형: 클러스터의 워커 노드에 사용할 가상 머신 유형을 지정합니다. 이렇게 하면 각 작업자에 사용할 수 있는 vCPU와 메모리가 결정됩니다.
  • 작업자 수: 클러스터의 초기 워커 노드 수를 정의합니다. Dataproc은 워크로드를 기반으로 이 숫자를 계속 자동 확장할 수 있습니다.
  • 영역: 클러스터의 Google Cloud 영역을 선택합니다. 위치는 데이터 위치와 네트워크 성능에 영향을 미칠 수 있습니다.
  • 추가 구성: 선점 설정, 네트워크 설정, 초기화 작업과 같은 정적 클러스터의 고급 옵션을 구성할 수 있습니다.

권장사항

파이프라인의 정적 클러스터를 만들 때 다음 구성을 사용합니다.

매개변수 설명
yarn.nodemanager.delete.debug-delay-sec YARN 로그를 보관합니다.
권장 값: 86400(1일)
yarn.nodemanager.pmem-check-enabled YARN을 사용 설정하여 물리적 메모리 한도를 확인하고 물리적 메모리가 한도를 초과하면 컨테이너를 종료합니다.
권장 값: false
yarn.nodemanager.vmem-check-enabled YARN을 사용 설정하여 가상 메모리 한도를 확인하고 물리적 메모리가 한도를 초과하려면 컨테이너를 종료합니다.
권장 값: false.

자세한 내용은 기존 Dataproc 클러스터에 대해 파이프라인 실행을 참조하세요.

클러스터 재사용

실행할 때마다 Dataproc 클러스터를 재사용하여 처리 시간을 줄일 수 있습니다. 클러스터 재사용은 연결 풀링이나 스레드 풀링과 유사한 모델로 구현됩니다. 모든 클러스터는 실행이 완료된 후에도 일정 시간 동안 계속 실행됩니다. 새 실행이 시작되면 컴퓨팅 프로필 구성과 일치하는 사용 가능한 유휴 상태의 클러스터를 찾으려고 시도합니다. 클러스터가 있으면 사용되고 없으면 새 클러스터가 시작됩니다.

클러스터 재사용 시 고려사항

  • 클러스터는 공유되지 않습니다. 일반 임시 클러스터 프로비저닝 모델과 마찬가지로 클러스터는 한 번에 파이프라인 실행 하나만 실행합니다. 클러스터가 유휴 상태인 경우에만 재사용됩니다.
  • 모든 실행에 클러스터 재사용을 사용 설정하면 모든 실행을 처리하는 데 필요한 클러스터 수가 필요에 따라 생성됩니다. 임시 Dataproc 프로비저닝 도구와 마찬가지로 생성된 클러스터 수를 직접 제어할 수 없습니다. Google Cloud 할당량을 사용하여 리소스를 계속 관리할 수 있습니다. 예를 들어 병렬 실행 최대 7개로 실행 100개를 실행하면 특정 시점에 클러스터가 최대 7개까지 생성됩니다.
  • 파이프라인에서 같은 프로필을 사용하고 같은 프로필 설정을 공유하는 즉시 클러스터는 여러 파이프라인 간에 재사용됩니다. 프로필 맞춤설정을 사용하면 클러스터는 클러스터 라벨 지정과 같은 모든 클러스터 설정을 포함하여 맞춤설정이 정확히 동일한 경우에만 계속 재사용됩니다.

  • 클러스터 재사용이 사용 설정된 경우 두 가지 주요 비용 고려사항이 있습니다.

    • 클러스터 시작과 초기화에 사용되는 리소스가 줄어듭니다.
    • 파이프라인 실행 간에 그리고 마지막 파이프라인 실행 후에 클러스터가 유휴 상태로 유지되도록 더 많은 리소스가 사용됩니다.

클러스터 재사용의 비용 효과를 예측하기는 어렵지만 비용을 최대한 절약할 수 있는 전략을 채택할 수 있습니다. 이 전략은 체이닝된 파이프라인의 주요 경로를 식별하고 이 주요 경로에 클러스터 재사용을 사용 설정하는 것입니다. 이렇게 하면 클러스터가 즉시 재사용되고 유휴 상태 시간이 낭비되지 않으며 성능 이점을 최대로 얻을 수 있습니다.

클러스터 재사용 사용 설정

배포된 파이프라인 구성의 Compute Config 섹션에서 또는 새 컴퓨팅 프로필을 만들 때 다음을 실행합니다.

  • 클러스터 삭제 건너뛰기를 사용 설정합니다.
  • 최대 유휴 상태 시간은 클러스터가 다음 파이프라인에서 클러스터를 재사용할 때까지 기다리는 시간입니다. 기본 최대 유휴 상태 시간은 30분입니다. 최대 유휴 상태 시간의 경우 비용과 재사용을 위한 클러스터 가용성을 고려하세요. 최대 유휴 시간 값이 클수록 더 많은 클러스터가 실행 준비 상태인 유휴 상태로 유지됩니다.

문제 해결: 버전 호환성

문제: Cloud Data Fusion 환경 버전이 Dataproc 클러스터 버전과 호환되지 않을 수 있습니다.

권장: 최신 Cloud Data Fusion 버전으로 업그레이드하고 지원되는 Dataproc 버전 중 하나를 사용합니다.

이전 버전의 Cloud Data Fusion은 지원되지 않는 Dataproc 버전과만 호환됩니다. Dataproc은 이러한 버전으로 생성된 클러스터에 대한 업데이트 및 지원을 제공하지 않습니다. 지원되지 않는 버전으로 생성된 클러스터를 계속 실행할 수 있지만 지원되는 버전으로 생성된 클러스터로 바꾸는 것이 좋습니다.

Cloud Data Fusion 버전 Dataproc 버전
6.10.1.1 2.2, 2.1, 2.0 *
6.10 2.1, 2.0 *
6.9 2.1, 2.0, 1.5 *
6.7-6.8 2.0, 1.5 *
6.4-6.6 2.0*, 1.3**
6.1-6.3 1.3**

* Cloud Data Fusion 버전 6.4 이상은 지원되는 Dataproc 버전과 호환됩니다. 특정 OS 기능이 필요하지 않은 한 major.minor 이미지 버전을 지정하는 것이 좋습니다.
Dataproc 클러스터에 사용된 OS 버전을 지정하려면 OS 버전이 이전 테이블에서 Cloud Data Fusion의 지원되는 Dataproc 버전 중 하나와 호환되어야 합니다.

** Cloud Data Fusion 버전 6.1~6.6은 지원되지 않는 Dataproc 버전 1.3과 호환됩니다.

문제 해결: 컨테이너가 0이 아닌 종료 코드 3으로 종료됨

문제: 자동 확장 정책이 사용되지 않고 정적 Dataproc 클러스터에 메모리 부족 문제가 발생하여 로그에 메모리 부족 예외(Container exited with a non-zero exit code 3)가 표시됩니다.

권장: 실행자 메모리를 늘립니다.

파이프라인에 task.executor.system.resources.memory 런타임 인수를 추가하여 메모리를 늘립니다. 다음 런타임 인수 예시에서는 메모리를 4,096MB로 설정합니다.

"task.executor.system.resources.memory": 4096

자세한 내용은 클러스터 크기 조정을 참조하세요.

다음 단계