.
Le norme di sicurezza dell'organizzazione, le regole di conformità legale e altre considerazioni possono richiedere di "ruotare" i cluster Managed Service for Apache Spark 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 Managed Service for Apache Spark mantenendo le impostazioni di configurazione dei cluster sostituiti.
Questa pagina mostra come configurare i cluster che intendi 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 Managed Service for Apache Spark 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 collega le etichette ai cluster per indicare se un cluster fa parte di un pool di cluster ruotati e riceve attivamente nuovi invii di job. Questo esempio utilizza le etichette cluster-pool e cluster-state=active 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'etichetta
cluster-poolcollegata 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'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 di 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 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'etichetta
cluster-state=pendingfordeletionper indicare che il cluster non riceve nuovi invii di job e 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 l'aggiornamento dell'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
activeetichette (vedi Inviare job ai cluster).Elimina i cluster che stai ruotando dopo che hanno terminato l'esecuzione dei job.