.
조직 보안 정책, 규정 준수 규칙, 기타 고려사항으로 인해 일정에 따라 클러스터를 삭제한 후 다시 만들어 Dataproc 클러스터를 정기적으로 '순환'해야 할 수 있습니다. 클러스터 순환의 일환으로 최신 Dataproc 이미지 버전으로 새 클러스터를 프로비저닝하면서 교체된 클러스터의 구성 설정을 유지할 수 있습니다.
이 페이지에서는 순환할 클러스터('순환 클러스터')를 설정하고, 작업을 제출한 후 필요에 따라 클러스터를 순환하는 방법을 보여줍니다.
커스텀 이미지 클러스터 순환: 커스텀 이미지 클러스터를 다시 만들 때 이전 또는 새 Dataproc 기본 이미지에 이전 또는 새 맞춤설정을 적용할 수 있습니다.
순환 클러스터 설정
순환 클러스터를 설정하려면 새 클러스터와 이전 클러스터를 구분할 고유한 타임스탬프 서픽스가 있는 클러스터 이름을 만든 다음, 클러스터가 순환 클러스터 풀의 일부로서 새로운 작업 제출을 적극적으로 수신하는지 여부를 나타내도록 클러스터에 라벨을 연결합니다. 이 예에서는 이러한 목적으로 cluster-pool
및 cluster-state=active
라벨을 사용하지만 원하는 라벨 이름을 사용할 수 있습니다.
환경 변수를 설정합니다.
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
라벨과 함께 클러스터를 풀의 일부로 식별하는 데 사용됩니다.
- cluster-pool-name: 하나 이상의 클러스터와 연결된 클러스터 풀의 이름입니다. 이 이름은 클러스터 이름과 클러스터에 연결된
클러스터를 만듭니다. 인수를 추가하고 다른 라벨을 사용할 수 있습니다.
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 )
클러스터 순환
순환하는 클러스터에 연결된 클러스터 라벨을 업데이트합니다. 이 예에서는
cluster-state=pendingfordeletion
라벨을 사용하여 클러스터가 새 작업 제출을 수신하지 않고 순환되고 있음을 나타내지만 이 목적으로 자체 라벨을 사용할 수 있습니다.gcloud dataproc clusters update ${CLUSTER_NAME} \ --region=${REGION} \ --update-labels="cluster-state=pendingfordeletion"
클러스터 라벨이 업데이트된 후에는 클러스터는 새 작업을 수신하지 않습니다. 이는 작업이
active
라벨만 있는 클러스터 풀 내의 클러스터에 제출되기 때문입니다(클러스터에 작업 제출을 참조하세요).작업 실행이 완료된 후 순환하는 클러스터를 삭제합니다.