클러스터 예약 중지

비활성 클러스터에 대해 Google Cloud 요금이 발생하는 것을 방지하거나, 클러스터 요금이 발생하지 않도록 클러스터를 삭제하고 다시 만들 필요가 없도록 하려면 모든 클러스터 VM을 중지하는 Dataproc 클러스터 예약 중지 기능을 사용하세요. 중지된 VM에는 요금이 청구되지 않지만 영구 디스크와 같은 연결된 리소스에는 요금이 계속 청구됩니다.

클러스터를 중지하면 모든 클러스터 VM이 중지되고 실행 중인 작업이 실패합니다. 클러스터가 중지되면 클러스터를 업데이트하거나, 클러스터에 작업을 제출하거나, Dataproc 구성요소 게이트웨이를 사용하여 클러스터의 선택적 구성요소에 액세스할 수 없습니다. 클러스터를 중지한 후 클러스터를 다시 시작하고 작업을 재개할 수 있습니다.

클러스터 예약 중지는 2.2.42+, 2.1.76+, 2.0.57+ 이상의 이미지 버전으로 생성된 클러스터에서 사용할 수 있습니다.

기능

  • 지정된 유휴 기간 후, 지정된 향후 시점 또는 클러스터 생성 요청 후 지정된 기간이 지나면 클러스터를 중지할 수 있습니다.

  • 클러스터 예약 중지는 보조 작업자가 있는 클러스터와 0 스케일 클러스터를 지원합니다.

  • 클러스터 예약 중지 구성을 업데이트하거나 취소할 수 있습니다.

제한사항 및 고려사항

  • 로컬 SSD가 있는 클러스터에서는 클러스터 예약 중지가 지원되지 않습니다.
  • Google Cloud 콘솔을 사용하여 클러스터 예약 중지 값을 설정할 수 없습니다.
  • 클러스터 예약 중지 구성을 업데이트할 수는 있지만 시작된 중지 작업은 계속됩니다. 중지 작업이 시작되었는지 확인하려면 Cloud Logging에서 클러스터 로그를 검사합니다.
  • 이전에 예약된 중지 시간이 있는 클러스터에서 중지 일정을 업데이트하면 예약된 중지 구성이 삭제됩니다. 예약된 중지를 다시 사용 설정하려면 업데이트 요청에 미래 시간을 포함하세요.

클러스터 예약 중지를 사용 중지하는 작업

클러스터가 실행되는 동안 다음 작업은 사용 중지 작업을 되돌릴 때까지 클러스터 예약 중지를 사용 중지합니다.

클러스터 유휴 시간 계산

클러스터가 유휴 상태로 간주되려면 다음 조건을 충족해야 합니다.

  • 클러스터 생성이 완료되어야 함(클러스터 프로비저닝 및 시작에 걸린 시간은 유휴 시간 계산에서 제외됨)
  • 클러스터에서 실행 중인 작업이 없음
  • 클러스터가 STOPPED 상태가 아님

클러스터에 작업을 제출하거나 클러스터를 중지하면 유휴 시간 계산이 재설정됩니다.

dataproc:dataproc.cluster-ttl.consider-yarn-activity 클러스터 속성은 다음과 같이 클러스터 유휴 시간 계산에 영향을 미칩니다.

  • 이 속성은 기본적으로 사용 설정 (true로 설정됨) 됩니다.
  • 이 속성을 사용 설정된 경우 클러스터 유휴 시간 계산을 시작하고 구현을 지속하기 위해서는 YARN 및 Dataproc Jobs API가 모두 유휴 상태여야 합니다.
    • YARN 활동에는 보류 중 및 실행 중인 YARN 애플리케이션이 포함됩니다.
    • Dataproc Jobs API 활동에는 Dataproc Jobs API에 제출된 보류 중 및 실행 중인 작업이 포함됩니다.
  • 이 속성을 false로 설정한 경우 Dataproc Jobs API 활동이 유휴 상태일 때만 클러스터 유휴 시간 계산이 시작되고 계속됩니다.

클러스터 예약 중지 사용

gcloud CLI

Google Cloud CLI 또는 Dataproc API를 사용하여 클러스터를 만들 때 예약된 중지 값을 설정할 수 있습니다. 클러스터를 만든 후 클러스터를 업데이트하여 클러스터에 이전에 설정된 클러스터 scheduledstop 값을 변경하거나 삭제할 수 있습니다.

플래그 설명 최소 단위 최소값 최댓값
--stop-max-idle1 클러스터 생성 및 클러스터 업데이트 명령어에 적용됩니다. 클러스터가 생성 또는 시작된 후 유휴 상태에 들어가는 시점부터 클러스터가 중지되기 시작하는 시점까지의 기간입니다. 기간은 IntegerUnit 형식으로 제공합니다. 여기서 단위로는 's, m, h, d'(각각 초, 분, 시, 일)를 사용할 수 있습니다. 예시: '30m' 또는 '1d'(클러스터가 유휴 상태가 된 후 30분 또는 1일) 1초 5분 14일
--no-stop-max-idle 클러스터 업데이트 명령어에만 적용됩니다. 이전에 설정된 --stop-max-idle 플래그를 기준으로 하는 클러스터 예약 중지를 취소합니다. 해당 사항 없음 해당 사항 없음 해당 사항 없음
--stop-expiration-time2 클러스터 생성 및 클러스터 업데이트 명령어에 적용됩니다. 클러스터 중지를 시작할 시간으로 ISO 8601 datetime 형식입니다. Timestamp Generator를 사용하여 올바른 형식으로 datetime을 생성할 수 있습니다. 예를 들어 '2017-08-22T13:31:48-08:00'은 만료 시간을 UTC -8:00 시간대의 13:21:48로 지정합니다.1초현재 시간부터 10분 현재 시간부터 14일
--stop-max-age2 클러스터 생성 및 클러스터 업데이트 명령어에 적용됩니다. 클러스터 만들기 요청을 제출하는 시점부터 클러스터 중지가 시작되는 시점까지의 기간입니다. 기간은 IntegerUnit 형식으로 제공합니다. 여기서 단위로는 's, m, h, d'(초, 분, 시, 일)를 사용할 수 있습니다. 예시: '30m'(지금부터 30분) 또는 '1d'(지금부터 1일) 1초 10분 14일
참고:
  1. 클러스터 생성 또는 업데이트 요청에 stop-max-idle 플래그를 stop-expiration-time 또는 stop-max-age 플래그와 함께 전달할 수 있습니다. 가장 먼저 충족하는 플래그에 따라 클러스터가 중지됩니다.
  2. stop-expiration-time 플래그 또는 stop-max-age 플래그를 클러스터 생성 또는 업데이트 명령어에 전달할 수 있지만, 둘 다 전달할 수는 없습니다.

클러스터 생성 예시:

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --stop-max-idle=DURATION \
    --stop-expiration-time=TIME \
    ... other flags ...

클러스터 업데이트 예시:

예를 들면 다음과 같습니다.

gcloud dataproc clusters update CLUSTER_NAME \
    --region=REGION \
    --stop-max-idle=DURATION \
    --no-stop-max-age \
    ... other flags

REST API

Dataproc API ClusterLifecycleConfig 필드와 다음 표에 나열된 값을 Dataproc cluster.create 또는 cluster.patch API 요청의 일부로 설정하여 클러스터의 예약된 중지 값을 만들거나 업데이트할 수 있습니다.

플래그 설명 최소 단위 최소값 최댓값
idleStopTtl1 클러스터 생성 및 클러스터 업데이트 명령어에 적용됩니다. 클러스터가 생성 또는 업데이트된 후 유휴 상태가 된 시점부터 클러스터가 중지되기 시작하는 시점까지의 기간입니다. 초 단위 시간을 소수점 아래 9자리까지 지정할 수 있으며 's'로 끝냅니다. 예시: '3.5s' 기간이 비어 있는 cluster.patch 요청을 제출하면 이전에 설정된 idleDeleteTtl 값을 취소합니다. 1초 5분
14일
autoStopTime2 클러스터 생성 및 클러스터 업데이트 명령어에 적용됩니다. 클러스터 중지를 시작할 시간입니다. RFC 3339 UTC 'Zulu' 형식의 타임스탬프를 제공하며 나노초 수준의 정밀도입니다. 예시: '2014-10-02T15:01:23.045123456Z' 1초 현재 시간부터 10분 현재 시간부터 14일
autoStopTtl2 클러스터 만들기 또는 업데이트 요청을 제출하는 시점부터 클러스터 중지가 시작되는 시점까지의 기간입니다. 초 단위 시간을 소수점 아래 9자리까지 지정할 수 있으며 's'로 끝냅니다. 예시: '3.5s' 1초 10분
기간이 비어 있는 cluster.patch 요청을 제출하면 이전에 설정된 autoStopTtl 값을 취소합니다.
14일
참고:
  1. 클러스터 생성 또는 업데이트 요청에 stop-max-idle 플래그를 stop-expiration-time 또는 stop-max-age 플래그와 함께 전달할 수 있습니다. 가장 먼저 충족하는 플래그에 따라 클러스터가 중지됩니다.
  2. stop-expiration-time 플래그 또는 stop-max-age 플래그를 클러스터 생성 또는 업데이트 명령어에 전달할 수 있지만, 둘 다 전달할 수는 없습니다.

예약된 삭제와 함께 예약된 중지 사용

클러스터를 만들거나 업데이트할 때 클러스터 예약 삭제와 함께 클러스터 예약 중지를 사용하는 경우 다음 제약사항에 유의하세요.

  • stop-max-idle 기간은 delete-max-idle 기간 또는 delete-max-age 또는 delete-expiration-time에서 발생하는 기간보다 짧거나 같아야 합니다.

  • stop-max-agestop-expiration-time은 각각 delete-max-agedelete-expiration-time보다 늦어야 합니다.

예약된 중지 클러스터 설정 보기

gcloud CLI

gcloud dataproc clusters list 명령어를 사용하여 클러스터에 예약된 중지가 사용 설정되었는지 확인할 수 있습니다.

 gcloud dataproc clusters list \
     --region=REGION

샘플 출력:

...
NAME         WORKER_COUNT ... SCHEDULED_STOP
CLUSTER_ID   NUMBER       ... enabled
...

gcloud dataproc clusters describe 명령어를 사용하여 클러스터 LifecycleConfig 예약된 중지 설정을 확인할 수 있습니다.

gcloud dataproc clusters describe CLUSTER_NAME \
    --region=REGION

샘플 출력:

...
lifecycleConfig:
  autoStopTime: '2018-11-28T19:33:48.146Z'
  idleStopTtl: 1800s
  idleStartTime: '2018-11-28T18:33:48.146Z'
...

autoStopTimeidleStopTtl 값은 사용자가 설정합니다. Dataproc는 최신 클러스터 유휴 시작 시간인 idleStartTime 값을 생성합니다.

Dataproc은 작업 활동 중단을 기반으로 idleStartTime을 계산하지만 예약된 클러스터 중지 메커니즘은 idleStartTime과 클러스터의 마지막 시작 시간을 모두 고려합니다. 특히 사용자가 또는 Dataproc이 클러스터를 중지하면 예약된 중지 기능의 유휴 상태 계산이 재설정됩니다. 즉, 예약된 정지까지의 카운트다운이 클러스터의 다음 시작 시 다시 시작됩니다. 하지만 중지된 클러스터를 다시 시작해도 idleStartTime 자체는 재설정되지 않습니다. 중지되기 전의 마지막 작업 비활성 상태를 계속 반영합니다.

따라서 Dataproc가 idleStopTtl에 따라 클러스터를 중지하려면 다음 두 가지 조건을 충족해야 합니다.

  1. 클러스터는 마지막으로 시작된 이후 idleStopTtl에 지정된 시간 동안 유휴 상태여야 합니다.
  2. 클러스터는 마지막 idleStartTime 재설정 이후 idleStopTtl로 지정된 기간 동안 유휴 상태여야 합니다.

REST API

clusters.list 요청을 수행하여 클러스터에 예약된 중지가 사용 설정되었는지 확인할 수 있습니다.