。
機構安全性政策、法規遵循規則和其他考量因素,可能會促使您定期「輪替」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
標籤的叢集集區內叢集 (請參閱「將工作提交至叢集」)。執行完工作後,請刪除要輪替的叢集。