클러스터 순환

.

조직 보안 정책, 규정 준수 규칙, 기타 고려사항으로 인해 일정에 따라 클러스터를 삭제한 후 다시 만들어 Dataproc 클러스터를 정기적으로 '순환'해야 할 수 있습니다. 클러스터 순환의 일환으로 최신 Dataproc 이미지 버전으로 새 클러스터를 프로비저닝하면서 교체된 클러스터의 구성 설정을 유지할 수 있습니다.

이 페이지에서는 순환할 클러스터('순환 클러스터')를 설정하고, 작업을 제출한 후 필요에 따라 클러스터를 순환하는 방법을 보여줍니다.

커스텀 이미지 클러스터 순환: 커스텀 이미지 클러스터를 다시 만들 때 이전 또는 새 Dataproc 기본 이미지에 이전 또는 새 맞춤설정을 적용할 수 있습니다.

순환 클러스터 설정

순환 클러스터를 설정하려면 새 클러스터와 이전 클러스터를 구분할 고유한 타임스탬프 서픽스가 있는 클러스터 이름을 만든 다음, 클러스터가 순환 클러스터 풀의 일부로서 새로운 작업 제출을 적극적으로 수신하는지 여부를 나타내도록 클러스터에 라벨을 연결합니다. 이 예에서는 이러한 목적으로 cluster-poolcluster-state=active 라벨을 사용하지만 원하는 라벨 이름을 사용할 수 있습니다.

  1. 환경 변수를 설정합니다.

    PROJECT=project ID \
      REGION=region \
      CLUSTER_POOL=cluster-pool-name \
      CLUSTER_NAME=$CLUSTER_POOL-$(date '+%Y%m%d%H%M') \
      BUCKET=Cloud Storage bucket-name
    

    참고:

    • cluster-pool-name: 하나 이상의 클러스터와 연결된 클러스터 풀의 이름입니다. 이 이름은 클러스터 이름과 클러스터에 연결된 cluster-pool 라벨과 함께 클러스터를 풀의 일부로 식별하는 데 사용됩니다.
  2. 클러스터를 만듭니다. 인수를 추가하고 다른 라벨을 사용할 수 있습니다.

    gcloud dataproc clusters create ${CLUSTER_NAME} \
      --project=${PROJECT_ID} \
      --region=${REGION} \
      --bucket=${BUCKET} \
      --labels="cluster-pool=${CLUSTER_POOL},cluster-state=active"
    

클러스터에 작업 제출

다음 Google Cloud CLI 및 Apache Airflow 방향성 비순환 그래프(DAG) 예시에서는 Apache Pig 작업을 클러스터에 제출합니다. 클러스터 라벨은 클러스터 풀 내의 활성 클러스터에 작업을 제출하는 데 사용됩니다.

gcloud

Cloud Storage에 있는 Apache Pig 작업을 제출합니다. 라벨을 사용하여 클러스터를 선택합니다.

gcloud dataproc jobs submit pig \
    --region=${REGION} \
    --file=gs://${BUCKET}/scripts/script.pig \
    --cluster-labels="cluster-pool=${CLUSTER_POOL},cluster-state=active"
  

Airflow

Airflow를 사용하여 Cloud Storage에 있는 Apache Pig 작업을 제출합니다. 라벨을 사용하여 클러스터를 선택합니다.

from airflow import DAG
from airflow.providers.google.cloud.operators.dataproc import DataprocSubmitJobOperator
from datetime import datetime

# Declare variables
project_id=  # e.g: my-project
region="us-central1"
dag_id='pig_wordcount'
cluster_labels={"cluster-pool":${CLUSTER_POOL},
                "cluster-state":"active"}
wordcount_script="gs://bucket-name/scripts/wordcount.pig"

# Define DAG

dag = DAG(
    dag_id,
    schedule_interval=None,  
    start_date=datetime(2023, 8, 16),
    catchup=False  
)

PIG_JOB = {
    "reference": {"project_id": project_id},
    "placement": {"cluster_labels": cluster_labels},
    "pig_job": {"query_file_uri": wordcount_script},
}

wordcount_task = DataprocSubmitJobOperator(
    task_id='wordcount',
    region=region,
    project_id=project_id,
    job=PIG_JOB,
    dag=dag
)

클러스터 순환

  1. 순환하는 클러스터에 연결된 클러스터 라벨을 업데이트합니다. 이 예에서는 cluster-state=pendingfordeletion 라벨을 사용하여 클러스터가 새 작업 제출을 수신하지 않고 순환되고 있음을 나타내지만 이 목적으로 자체 라벨을 사용할 수 있습니다.

    gcloud dataproc clusters update ${CLUSTER_NAME} \
        --region=${REGION} \
        --update-labels="cluster-state=pendingfordeletion"
    

    클러스터 라벨이 업데이트된 후에는 클러스터는 새 작업을 수신하지 않습니다. 이는 작업이 active 라벨만 있는 클러스터 풀 내의 클러스터에 제출되기 때문입니다(클러스터에 작업 제출을 참조하세요).

  2. 작업 실행이 완료된 후 순환하는 클러스터를 삭제합니다.