.
I criteri di sicurezza dell'organizzazione, le regole di conformità alle normative e altri considerazioni 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 dei nuovi cluster Versioni immagine 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 una Immagine di base di Dataproc durante la creazione del cluster di immagini personalizzato.
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
cluster-pool
collegata 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
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 CLI Google Cloud e grafo diretto aciclico (DAG) di Apache Airflow inviano un job Apache Pig a un cluster. Le etichette del cluster sono utilizzato 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 situato 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 collegate ai cluster che stai ruotando. Questo esempio utilizza l'etichetta
cluster-state=pendingfordeletion
per indicare che il cluster non riceve nuovi job inviati e verrà ritirato, ma puoi utilizzare la tua etichetta per questo scopo.gcloud dataproc clusters update ${CLUSTER_NAME} \ --region=${REGION} \ --update-labels="cluster-state=pendingfordeletion"
Una volta aggiornata l'etichetta del cluster, quest'ultimo non riceve nuovi job poiché i job vengono inviati ai cluster all'interno di un pool di cluster solo con
active
etichette (vedi Invia job ai cluster).Elimina i cluster che non utilizzi più al termine dell'esecuzione dei job.