.
Sicherheitsrichtlinien der Organisation, rechtliche Bestimmungen und andere Überlegungen können dazu führen, dass Sie Ihre Dataproc-Cluster in regelmäßigen Abständen „rotieren“ müssen, indem Sie sie löschen und dann nach einem Zeitplan neu erstellen. Im Rahmen der Clusterrotation können neue Cluster mit den neuesten Dataproc-Image-Versionen bereitgestellt werden, während die Konfigurationseinstellungen der ersetzten Cluster beibehalten werden.
Auf dieser Seite erfahren Sie, wie Sie Cluster einrichten, die Sie rotieren Cluster", senden Sie Jobs an sie und rotieren die Cluster dann nach Bedarf.
Clusterrotation für benutzerdefinierte Images: Sie können vorherige oder neue Anpassungen auf ein vorheriges oder neues Dataproc-Basis-Image anwenden, wenn Sie den Cluster mit dem benutzerdefinierten Image neu erstellen.
Rotierte Cluster einrichten
Erstellen Sie zum Einrichten roter Cluster eindeutige Clusternamen mit Zeitstempel
um vorherige von neuen Clustern zu unterscheiden und dann Clustern Labels hinzuzufügen
die angeben, ob ein Cluster Teil eines rotierten Clusterpools ist
neue Stellenausschreibungen zu erhalten. In diesem Beispiel werden cluster-pool
und
cluster-state=active
Labels für diese Zwecke, aber Sie können
eigenen Labelnamen.
Legen Sie Umgebungsvariablen fest:
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
Hinweise:
- cluster-pool-name: Der Name des Clusterpools, der mit
einem oder mehreren Clustern. Dieser Name wird im Clusternamen und mit dem
cluster-pool
-Label verwendet, das dem Cluster zugewiesen ist, um den Cluster als Teil des Pools zu identifizieren.
- cluster-pool-name: Der Name des Clusterpools, der mit
einem oder mehreren Clustern. Dieser Name wird im Clusternamen und mit dem
Erstellen Sie den Cluster. Sie können Argumente hinzufügen und verschiedene Labels verwenden.
gcloud dataproc clusters create ${CLUSTER_NAME} \ --project=${PROJECT_ID} \ --region=${REGION} \ --bucket=${BUCKET} \ --labels="cluster-pool=${CLUSTER_POOL},cluster-state=active"
Jobs an Cluster senden
In den folgenden Beispielen für die Google Cloud CLI und den gerichteten azyklischen Graphen (Directed Acyclic Graph, DAG) von Apache Airflow wird ein Apache Pig-Job an einen Cluster gesendet. Clusterlabels sind zum Senden des Jobs an einen aktiven Cluster in einem Clusterpool.
gcloud
Senden Sie einen Apache Pig-Job in Cloud Storage. Wählen Sie den Cluster mithilfe von Labels aus.
gcloud dataproc jobs submit pig \ --region=${REGION} \ --file=gs://${BUCKET}/scripts/script.pig \ --cluster-labels="cluster-pool=${CLUSTER_POOL},cluster-state=active"
Airflow
Einen Apache Pig-Job in Cloud Storage mit Airflow einreichen Wählen Sie den Cluster mithilfe von Labels aus.
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 )
Cluster rotieren
Aktualisieren Sie die Clusterlabels, die den Clustern zugewiesen sind, die Sie austauschen. In diesem Beispiel wird das Label
cluster-state=pendingfordeletion
verwendet, um anzugeben, dass der Cluster keine neuen Jobeinreichungen erhält und ausgetauscht wird. Sie können aber auch ein eigenes Label für diesen Zweck verwenden.gcloud dataproc clusters update ${CLUSTER_NAME} \ --region=${REGION} \ --update-labels="cluster-state=pendingfordeletion"
Nachdem das Clusterlabel aktualisiert wurde, erhält der Cluster keine neuen Jobs Da Jobs an Cluster in einem Cluster-Pool gesendet werden nur mit
active
Labels (siehe Jobs an Cluster senden).Löschen Sie Cluster, die rotiert werden, nachdem die laufenden Jobs beendet wurden.