.
Las políticas de seguridad de la organización, las reglas de cumplimiento normativo y otras consideraciones pueden solicitar que "rotes" tus clústeres de Dataproc a intervalos regulares borrando y, luego, recreando clústeres según una programación. Como parte de la rotación de clústeres, se pueden aprovisionar clústeres nuevos con las versiones de imagen de Dataproc más recientes y, al mismo tiempo, conservar la configuración de los clústeres reemplazados.
En esta página, se muestra cómo configurar los clústeres que planeas rotar ("clústeres rotados"), enviarles trabajos y, luego, rotar los clústeres según sea necesario.
Rotación de clústeres deimágenes personalizadas: Puedes aplicar personalizaciones anteriores o nuevas a una imagen base de Dataproc anterior o nueva cuando vuelvas a crear el clúster de imágenes personalizadas.
Configura clústeres rotados
Para configurar clústeres rotados, crea nombres de clústeres únicos con sufijo 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 forma parte de un grupo de clústeres rotados y si recibe envíos de trabajos nuevos de forma activa. 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
cluster-pooletiqueta 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
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 los clústeres
En los siguientes ejemplos de la CLI de Google Cloud y del grafo acíclico dirigido (DAG) de Apache Airflow , se envía un trabajo de Apache Pig a un clúster. Las etiquetas de clústeres 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. Elige el clúster con etiquetas.
gcloud dataproc jobs submit pig \
--region=${REGION} \
--file=gs://${BUCKET}/scripts/script.pig \
--cluster-labels="cluster-pool=${CLUSTER_POOL},cluster-state=active"
Airflow
Envía un trabajo de Apache Pig ubicado en Cloud Storage con Airflow. Elige el clúster con 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 )
Rota los clústeres
Actualiza las etiquetas de clústeres adjuntas a los clústeres que estás rotando. En este ejemplo, se usa la etiqueta
cluster-state=pendingfordeletionpara indicar que el clúster no recibe envíos de trabajos nuevos y que se está rotando, pero puedes usar tu propia etiqueta para este propósito.gcloud dataproc clusters update ${CLUSTER_NAME} \ --region=${REGION} \ --update-labels="cluster-state=pendingfordeletion"Después de actualizar la etiqueta del clúster, este 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 estás rotando después de que terminen de ejecutar trabajos.