.
Les règles de sécurité de l'organisation, les règles de conformité réglementaires et d'autres considérations peuvent vous inciter à "faire tourner" vos clusters Dataproc à intervalles réguliers en les supprimant, puis en les recréant selon une planification. Lors de la rotation des clusters, de nouveaux clusters peuvent être provisionnés avec les dernières versions d'image Dataproc tout en conservant les paramètres de configuration des clusters remplacés.
Cette page explique comment configurer les clusters que vous prévoyez de faire pivoter ("clusters pivotés"), comment y envoyer des jobs, puis comment faire pivoter les clusters selon vos besoins.
Rotation des clusters d'image personnalisée : vous pouvez appliquer des personnalisations précédentes ou nouvelles à une image de base Dataproc précédente ou nouvelle lorsque vous recréez le cluster d'image personnalisée.
Configurer des clusters pivotés
Pour configurer des clusters permutés, créez des noms de cluster uniques avec un suffixe d'horodatage afin de distinguer les anciens clusters des nouveaux. Ensuite, ajoutez des libellés aux clusters pour indiquer si un cluster fait partie d'un pool de clusters permutés et s'il reçoit activement de nouvelles demandes de job. Cet exemple utilise les libellés cluster-pool et cluster-state=active à ces fins, mais vous pouvez utiliser vos propres noms de libellés.
Définissez les variables d'environnement :
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
Remarques :
- cluster-pool-name : nom du pool de clusters associé à un ou plusieurs clusters. Ce nom est utilisé dans le nom du cluster et avec le libellé
cluster-poolassocié au cluster pour identifier le cluster comme faisant partie du pool.
- cluster-pool-name : nom du pool de clusters associé à un ou plusieurs clusters. Ce nom est utilisé dans le nom du cluster et avec le libellé
Créez le cluster. Vous pouvez ajouter des arguments et utiliser différents libellés.
gcloud dataproc clusters create ${CLUSTER_NAME} \ --project=${PROJECT_ID} \ --region=${REGION} \ --bucket=${BUCKET} \ --labels="cluster-pool=${CLUSTER_POOL},cluster-state=active"
Envoyer des tâches aux clusters
Les exemples suivants du Google Cloud CLI et de graphe orienté acyclique (DAG) Apache Airflow envoient une tâche Apache Pig à un cluster. Les libellés de cluster permettent d'envoyer le job à un cluster actif dans un pool de clusters.
gcloud
Envoyez une tâche Apache Pig située dans Cloud Storage. Sélectionnez le cluster à l'aide des libellés.
gcloud dataproc jobs submit pig \
--region=${REGION} \
--file=gs://${BUCKET}/scripts/script.pig \
--cluster-labels="cluster-pool=${CLUSTER_POOL},cluster-state=active"
Airflow
Envoyez un job Apache Pig situé dans Cloud Storage à l'aide d'Airflow. Sélectionnez le cluster à l'aide des libellés.
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 )
Faire pivoter des clusters
Mettez à jour les libellés de cluster associés aux clusters que vous supprimez. Cet exemple utilise le libellé
cluster-state=pendingfordeletionpour indiquer que le cluster ne reçoit pas de nouvelles tâches et qu'il est en cours de remplacement, mais vous pouvez utiliser votre propre libellé à cet effet.gcloud dataproc clusters update ${CLUSTER_NAME} \ --region=${REGION} \ --update-labels="cluster-state=pendingfordeletion"Une fois l'étiquette du cluster mise à jour, le cluster ne reçoit plus de tâches, car elles ne sont envoyées qu'aux clusters d'un pool de clusters avec des étiquettes
active(voir Envoyer des tâches à des clusters).Supprimez les clusters que vous remplacez une fois qu'ils ont terminé d'exécuter les jobs.