.
I criteri di sicurezza dell'organizzazione, le regole di conformità alle normative e altri aspetti possono richiedere di "ruotare" i cluster Dataproc a intervalli regolari eliminandoli e poi ricreandoli 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 con rotazione"), inviare job e poi ruotare i cluster in base alle esigenze.
Rotazione del cluster di immagini 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 univoci con suffisso di timestamp per distinguere i cluster precedenti da quelli nuovi, quindi associa alle etichette dei cluster che indicano se un cluster fa parte di un pool di cluster ruotati e riceve attivamente nuovi job inviati. Questo esempio utilizza le etichette cluster-pool
e
cluster-state=active
per queste finalità, ma puoi utilizzare
i nomi delle tue 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'etichetta
cluster-pool
associata al cluster per identificarlo 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'etichetta
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 grafo grafo diretto aciclico (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 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 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 )
Ruota i cluster
Aggiorna le etichette dei cluster associate ai cluster che vuoi ritirare. Questo esempio utilizza l'etichetta
cluster-state=pendingfordeletion
per indicare che il cluster non riceve nuovi job inviati e verrà eliminato, ma puoi utilizzare la tua etichetta per questo scopo.gcloud dataproc clusters update ${CLUSTER_NAME} \ --region=${REGION} \ --update-labels="cluster-state=pendingfordeletion"
Dopo l'aggiornamento dell'etichetta del cluster, il cluster non riceve nuovi job poiché i job vengono inviati ai cluster all'interno di un pool di cluster solo con etichette
active
(vedi Inviare job ai cluster).Elimina i cluster che non utilizzi più al termine dell'esecuzione dei job.