.
Le norme di sicurezza dell'organizzazione, le regole di conformità normativa e altre considerazioni possono richiedere di "ruotare" i cluster Dataproc a intervalli regolari eliminando e poi ricreando i cluster in base a una pianificazione. Nell'ambito della rotazione dei cluster, è possibile eseguire il provisioning di nuovi cluster con le versioni più recenti delle immagini Dataproc mantenendo le impostazioni di configurazione dei cluster sostituiti.
Questa pagina mostra come configurare i cluster che prevedi di ruotare ("cluster ruotati"), inviare job e poi ruotare i cluster in base alle esigenze.
Rotazione dei cluster diimmagini personalizzate: Puoi applicare personalizzazioni precedenti o nuove a un'immagine di base Dataproc precedente o nuova quando ricrei il cluster di immagini personalizzate.
Configurare i cluster ruotati
Per configurare i cluster ruotati, crea nomi di cluster univoci con suffisso timestamp
per distinguere i cluster precedenti da quelli nuovi, quindi aggiungi etichette ai cluster
che indicano se un cluster fa parte di un pool di cluster ruotati e riceve attivamente
nuovi invii di job. Questo esempio utilizza cluster-pool e
cluster-state=active etichette per questi scopi, ma puoi utilizzare
i tuoi nomi di etichette.
Imposta le variabili di ambiente:
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
Note:
- cluster-pool-name: il nome del pool di cluster associato a
uno o più cluster. Questo nome viene utilizzato nel nome del cluster e con l'
cluster-pooletichetta collegata al cluster per identificare il cluster come parte del pool.
- cluster-pool-name: il nome del pool di cluster associato a
uno o più cluster. Questo nome viene utilizzato nel nome del cluster e con l'
Crea il cluster. Puoi aggiungere argomenti e utilizzare etichette diverse.
gcloud dataproc clusters create ${CLUSTER_NAME} \ --project=${PROJECT_ID} \ --region=${REGION} \ --bucket=${BUCKET} \ --labels="cluster-pool=${CLUSTER_POOL},cluster-state=active"
Inviare job ai cluster
I seguenti esempi di Google Cloud CLI e di grafici aciclici diretti (DAG) di Apache Airflow inviano un job Apache Pig a un cluster. Le etichette dei cluster vengono utilizzate per inviare il job a un cluster attivo all'interno di un pool di cluster.
gcloud
Invia un job Apache Pig che si trova in Cloud Storage. Scegli il cluster utilizzando le etichette.
gcloud dataproc jobs submit pig \
--region=${REGION} \
--file=gs://${BUCKET}/scripts/script.pig \
--cluster-labels="cluster-pool=${CLUSTER_POOL},cluster-state=active"
Airflow
Invia un job Apache Pig che si trova in Cloud Storage utilizzando Airflow. Scegli il cluster utilizzando le etichette.
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 )
Ruotare i cluster
Aggiorna le etichette dei cluster collegate ai cluster che stai ruotando. Questo esempio utilizza l'eticolo
cluster-state=pendingfordeletionper indicare che il cluster non riceve nuovi invii di job e che viene ruotato, ma puoi utilizzare la tua etichetta per questo scopo.gcloud dataproc clusters update ${CLUSTER_NAME} \ --region=${REGION} \ --update-labels="cluster-state=pendingfordeletion"Dopo aver aggiornato l'etichetta del cluster, il cluster non riceve nuovi job perché i job vengono inviati solo ai cluster all'interno di un pool di cluster con etichette
active(vedi Inviare job ai cluster).Elimina i cluster che stai ruotando dopo che hanno terminato l'esecuzione dei job.