Cluster skalieren

Nachdem Sie einen Managed Service for Apache Spark-Cluster erstellt haben, können Sie ihn anpassen („skalieren“), indem Sie die Anzahl der primären oder sekundären Worker-Knoten im Cluster erhöhen oder verringern (horizontale Skalierung). Sie können einen Managed Service for Apache Spark-Cluster jederzeit skalieren, auch wenn Jobs im Cluster ausgeführt werden. Der Maschinentyp eines vorhandenen Clusters (vertikale Skalierung) kann nicht geändert werden. Erstellen Sie zur vertikalen Skalierung einen Cluster mit einem unterstützten Maschinentyp und migrieren Sie dann Jobs zum neuen Cluster.

Sie können einen Managed Service for Apache Spark-Cluster für Folgendes skalieren:

  1. um die Anzahl der Worker zu erhöhen, damit ein Job schneller ausgeführt wird.
  2. Reduzieren der Anzahl der Worker, um Geld zu sparen. (Beachten Sie beim Reduzieren eines Clusters die ordnungsgemäße Außerbetriebnahme, um den Verlust laufender Aufgaben zu vermeiden.)
  3. um die Anzahl der Knoten zu erhöhen und den verfügbaren HDFS-Speicher (Hadoop Distributed File System) zu erweitern.

Da Cluster mehrmals skaliert werden können, können Sie die Clustergröße einmal erhöhen oder verringern und später wieder verringern oder erhöhen.

Empfehlungen:

  • Worker vorsichtig entfernen: Wenn Sie Worker aus Ihrem Cluster entfernen, achten Sie darauf, dass die neue Clustergröße für Ihre Arbeitslast ausreicht. Ist dies nicht der Fall, kann es lange dauern, bis Ihre Jobs abgeschlossen sind, oder sie reagieren möglicherweise nicht mehr.

  • Skalieren von primären Workern vermeiden: Auf primären Workern werden HDFS-DataNodes ausgeführt, während sekundäre Worker nur für die Verarbeitung zuständig sind. Die Skalierung primärer Worker birgt Risiken. Beispielsweise können HDFS-NameNodes während Skalierungsvorgängen mehrere Race-Bedingungen haben, die dazu führen können, dass HDFS beschädigt wird und die Außerbetriebnahme auf unbestimmte Zeit hängen bleibt. Weitere Informationen finden Sie unter Skalierung primärer Worker vermeiden.

Skalierung verwenden

Es gibt drei Möglichkeiten, Ihren Managed Service for Apache Spark-Cluster zu skalieren:

  1. Verwenden Sie das gcloud-Befehlszeilentool in der gcloud CLI.
  2. Bearbeiten Sie die Clusterkonfiguration in der Google Cloud Console.
  3. Verwenden der Rest API

Neue Worker, die einem Cluster hinzugefügt wurden, verwenden den gleichen Maschinentyp wie bestehende Worker. Beispiel: Wird ein Cluster mit Workern des Maschinentyps n1-standard-8 erstellt, so nutzen neue Worker ebenfalls den Maschinentyp n1-standard-8.

Sie können die Anzahl der primären Worker, der sekundären Worker (Worker auf Abruf) oder beider skalieren. Wenn Sie beispielsweise nur die Anzahl der Worker (auf Abruf) skalieren, bleibt die Anzahl der primären Worker unverändert.

gcloud

Führen Sie den folgenden Befehl aus, um einen Cluster mit gcloud dataproc clusters update zu skalieren:
gcloud dataproc clusters update cluster-name \
    --region=region \
    [--num-workers and/or --num-secondary-workers]=new-number-of-workers
Dabei ist cluster-name der Name des zu aktualisierenden Clusters und new-number-of-workers die aktualisierte Anzahl der primären und/oder sekundären Worker-Knoten. Wenn Sie beispielsweise einen Cluster mit dem Namen „dataproc-1“ so skalieren möchten, dass fünf primäre Worker-Knoten verwendet werden, führen Sie den folgenden Befehl aus.
gcloud dataproc clusters update dataproc-1 \
    --region=region \
    --num-workers=5
...
Waiting on operation [operations/projects/project-id/operations/...].
Waiting for cluster update operation...done.
Updated [https://dataproc.googleapis.com/...].
clusterName: my-test-cluster
...
  masterDiskConfiguration:
    bootDiskSizeGb: 500
  masterName: dataproc-1-m
  numWorkers: 5
  ...
  workers:
  - my-test-cluster-w-0
  - my-test-cluster-w-1
  - my-test-cluster-w-2
  - my-test-cluster-w-3
  - my-test-cluster-w-4
...

REST API

Weitere Informationen finden Sie unter cluster.patch.

Beispiel

PATCH /v1/projects/project-id/regions/us-central1/clusters/example-cluster?updateMask=config.worker_config.num_instances,config.secondary_worker_config.num_instances
{
  "config": {
    "workerConfig": {
      "numInstances": 4
    },
    "secondaryWorkerConfig": {
      "numInstances": 2
    }
  },
  "labels": null
}

Console

Wenn Sie einen Cluster nach dessen Erstellung skalieren möchten, wechseln Sie zur Seite Cluster in der Google Cloud Console und öffnen die Seite Clusterdetails für den betreffenden Cluster. Klicken Sie dann auf dem Tab Konfiguration auf den Button Bearbeiten. Geben Sie einen neuen Wert für die Anzahl der Worker-Knoten und/oder Worker-Knoten auf Abruf ein (im folgenden Screenshot auf „5“ bzw. „2“ aktualisiert). Klicken Sie auf Speichern, um den Cluster zu aktualisieren.

So wählt Managed Service for Apache Spark Clusterknoten zum Entfernen aus

In Clustern, die mit den Image-Versionen 1.5.83+, 2.0.57+ und 2.1.5+ erstellt wurden, versucht Managed Service for Apache Spark beim Herunterskalieren eines Clusters, die Auswirkungen des Entfernens von Knoten auf laufende YARN-Anwendungen zu minimieren. Dazu werden zuerst inaktive, fehlerhafte und inaktive Knoten entfernt und dann Knoten mit den wenigsten laufenden YARN-Anwendungsmastern und laufenden Containern.

Ordnungsgemäße Außerbetriebnahme

Wenn Sie einen Cluster herunterskalieren, werden laufende Aufgaben möglicherweise beendet, bevor sie abgeschlossen sind. Wenn Sie Managed Service for Apache Spark Version 1.2 oder höher verwenden, können Sie die ordnungsgemäße Außerbetriebnahme verwenden, die die ordnungsgemäße Außerbetriebnahme von YARN-Knoten umfasst, um die laufende Arbeit auf einem Worker abzuschließen, bevor er aus dem Cloud Managed Service for Apache Spark-Cluster entfernt wird.

Ordnungsgemäße Außerbetriebnahme und sekundäre Worker

Die sekundäre Worker-Gruppe (Worker-Gruppe auf Abruf) stellt Worker weiter bereit oder löscht sie, um die erwartete Größe zu erreichen, nachdem ein Cluster-Skalierungsvorgang als abgeschlossen markiert wurde. Wenn Sie versuchen, einen sekundären Worker ordnungsgemäß außer Betrieb zu nehmen, und eine Fehlermeldung wie die folgende erhalten:

„Die sekundäre Workergruppe kann nicht außerhalb von Managed Service for Apache Spark geändert werden. Wenn Sie diesen Cluster vor Kurzem erstellt oder aktualisiert haben, warten Sie einige Minuten, bevor Sie ihn ordnungsgemäß außer Betrieb nehmen, damit alle sekundären Instanzen hinzugefügt bzw. aus dem Cluster entfernt werden können. Erwartete Größe der sekundären Worker-Gruppe: x, tatsächliche Größe: y".

Warten Sie einige Minuten und wiederholen Sie dann die Anfrage zur ordnungsgemäßen Außerbetriebnahme.

Ordnungsgemäße Außerbetriebnahme verwenden

Die ordnungsgemäße Außerbetriebnahme von Managed Service for Apache Spark umfasst die ordnungsgemäße Außerbetriebnahme von YARN-Knoten, um die laufende Arbeit auf einem Worker abzuschließen, bevor er aus dem Managed Service for Apache Spark-Cluster entfernt wird. Die ordnungsgemäße Außerbetriebnahme ist standardmäßig deaktiviert. Sie kann aktiviert werden, indem Sie einen Zeitüberschreitungswert festlegen, wenn Sie Ihren Cluster aktualisieren, um einen oder mehrere Worker aus dem Cluster zu entfernen.

gcloud

Wenn Sie einen Cluster aktualisieren, um einen oder mehrere Worker zu entfernen, verwenden Sie den Befehl gcloud dataproc clusters update mit dem Flag --graceful-decommission-timeout. Die Zeitüberschreitungswerte (String) können den Wert "0s" (Standardeinstellung; erzwungene Außerbetriebnahme, nicht ordnungsgemäß) oder eine positive Dauer relativ zum aktuellen Zeitpunkt (z. B. "3s") haben. Die maximale Dauer beträgt 1 Tag.
gcloud dataproc clusters update cluster-name \
    --region=region \
    --graceful-decommission-timeout="timeout-value" \
    [--num-workers and/or --num-secondary-workers]=decreased-number-of-workers \
    ... other args ...

REST API

Weitere Informationen finden Sie unter clusters.patch.gracefulDecommissionTimeout. Die Zeitüberschreitungswerte (String) können den Wert "0" (Standardeinstellung; erzwungene Außerbetriebnahme, nicht ordnungsgemäß) oder eine Dauer in Sekunden (z. B. "3s") haben. Die maximale Dauer beträgt 1 Tag.

Console

Wenn Sie für einen Cluster nach dessen Erstellung die ordnungsgemäße Außerbetriebnahme auswählen möchten, wechseln Sie zur Seite Cluster in der Google Cloud Console und öffnen die Seite Clusterdetails für den betreffenden Cluster. Klicken Sie dann auf dem Tab Konfiguration auf den Button Bearbeiten. Wählen Sie im Bereich Ordnungsgemäße Außerbetriebnahme die Option Ordnungsgemäße Außerbetriebnahme verwenden aus und wählen Sie dann einen Zeitlimitwert aus. Klicken Sie auf Speichern, um den Cluster zu aktualisieren.

Ordnungsgemäße Außerbetriebnahme abbrechen

In Managed Service for Apache Spark-Clustern, die mit den Image-Versionen 2.0.57+ oder 2.1.5+ erstellt wurden, können Sie den Befehl gcloud dataproc operations cancel ausführen oder eine Managed Service for Apache Spark API-Anfrage operations.cancel senden, um einen ordnungsgemäßen Außerbetriebnahmevorgang abzubrechen.

Wenn Sie einen ordnungsgemäßen Außerbetriebnahmevorgang abbrechen:

  • Worker im Status DECOMMISSIONING werden wieder in Betrieb genommen und erhalten nach Abschluss des Abbruchs des Vorgangs den Status ACTIVE.

  • Wenn der Herunterskalierungsvorgang Labelaktualisierungen umfasst, werden die Aktualisierungen möglicherweise nicht wirksam.

Wenn Sie den Status der Abbruchanfrage prüfen möchten, können Sie den Befehl gcloud dataproc operations describe ausführen oder eine operations.get-Anfrage an die Managed Service for Apache Spark API senden. Wenn der Abbruchvorgang erfolgreich ist, wird der Status des inneren Vorgangs als CANCELLED markiert.