.
Las políticas de seguridad de la organización, las reglas de cumplimiento reglamentario y otras consideraciones pueden hacer que rotes tus clústeres de Dataproc a intervalos regulares si borras y vuelves a crear clústeres según una programación. Como parte de la rotación de los clústeres, los clústeres nuevos se pueden aprovisionar con las versiones más recientes de las imágenes de Dataproc y, al mismo tiempo, conservar la configuración de los clústeres reemplazados.
En esta página, se muestra cómo configurar clústeres que planeas rotar (“clústeres rotados”), enviarles trabajos y, luego, rotarlos según sea necesario.
Rotación del clúster de imagen personalizada: puedes aplicar personalizaciones anteriores o nuevas a una imagen base de Dataproc nueva o anterior cuando vuelves a crear el clúster de imágenes personalizadas.
Configura clústeres rotados
Para configurar clústeres rotados, crea nombres de clúster únicos con sufos de marca de tiempo para distinguir los clústeres anteriores de los nuevos y, luego, adjunta etiquetas a los clústeres que indiquen si un clúster es parte de un grupo rotado y recibe de forma activa envíos de trabajos nuevos. En este ejemplo, se usan las etiquetas cluster-pool
y cluster-state=active
para estos fines, pero puedes usar tus propios nombres de etiquetas.
Establece las variables de entorno:
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
Notas:
- cluster-pool-name: Es el nombre del grupo de clústeres asociado con uno o más clústeres. Este nombre se usa en el nombre del clúster y con la etiqueta
cluster-pool
adjunta al clúster para identificarlo como parte del grupo.
- cluster-pool-name: Es el nombre del grupo de clústeres asociado con uno o más clústeres. Este nombre se usa en el nombre del clúster y con la etiqueta
Crea el clúster. Puedes agregar argumentos y usar diferentes etiquetas.
gcloud dataproc clusters create ${CLUSTER_NAME} \ --project=${PROJECT_ID} \ --region=${REGION} \ --bucket=${BUCKET} \ --labels="cluster-pool=${CLUSTER_POOL},cluster-state=active"
Envía trabajos a clústeres
Los siguientes ejemplos de Google Cloud CLI y del grafo acíclico dirigido (DAG) de Apache Airflow envían un trabajo de Apache Pig a un clúster. Las etiquetas de clúster se usan para enviar el trabajo a un clúster activo dentro de un grupo de clústeres.
gcloud
Envía un trabajo de Apache Pig ubicado en Cloud Storage. Elegir el clúster mediante etiquetas
gcloud dataproc jobs submit pig \ --region=${REGION} \ --file=gs://${BUCKET}/scripts/script.pig \ --cluster-labels="cluster-pool=${CLUSTER_POOL},cluster-state=active"
Airflow
Enviar un trabajo de Apache Pig ubicado en Cloud Storage con Airflow Elegir el clúster mediante etiquetas
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 )
Rotar clústeres
Actualiza las etiquetas de los clústeres adjuntas a los clústeres que rotas. En este ejemplo, se usa la etiqueta
cluster-state=pendingfordeletion
para indicar que el clúster no recibe envíos de trabajos nuevos y se rota, pero puedes usar tu propia etiqueta para este fin.gcloud dataproc clusters update ${CLUSTER_NAME} \ --region=${REGION} \ --update-labels="cluster-state=pendingfordeletion"
Después de que se actualiza la etiqueta del clúster, el clúster no recibe trabajos nuevos, ya que los trabajos se envían a clústeres dentro de un grupo de clústeres solo con etiquetas
active
(consulta Envía trabajos a los clústeres).Borra los clústeres que rotas después de que terminen de ejecutar los trabajos.