Nachdem Sie einen Dataproc-Cluster erstellt haben, können Sie den Cluster anpassen ("skalieren"), indem Sie die Anzahl der primären oder sekundären Worker-Knoten (horizontale Skalierung) im Cluster erhöhen oder verringern. Dataproc-Cluster können jederzeit skaliert werden, auch wenn Jobs auf dem 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.
Welche Vorteile bieten Dataproc-Cluster?
- Erhöhen der Anzahl vorhandener Worker, um die Ausführung eines Jobs zu beschleunigen
- 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.)
- Erhöhen der Anzahl vorhandener Knoten, um verfügbaren HDFS-Speicher (Hadoop Distributed Filesystem) zu erweitern
Da Cluster mehrmals skaliert werden können, kann es sinnvoll sein, die Clustergröße einmalig zu erhöhen/verringern und dann zu einem späteren Zeitpunkt zu verringern/erhöhen.
Skalierung verwenden
Es gibt drei Methoden zum Skalieren von Dataproc-Clustern:
- Verwenden Sie den
gcloud
. Befehlszeilentool in der gcloud CLI verwenden. - Bearbeiten Sie die Clusterkonfiguration in der Google Cloud Console.
- 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
Um einen Cluster mit gcloud dataproc clusters update zu skalieren, führen Sie den folgenden Befehl aus:gcloud dataproc clusters update cluster-name \ --region=region \ [--num-workers and/or --num-secondary-workers]=new-number-of-workers
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, öffnen Sie in der Google Cloud Console auf der Seite Cluster die Seite Clusterdetails für den betreffenden Cluster. Klicken Sie dann auf dem Tab Konfiguration auf die Schaltfläche 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 Dataproc Clusterknoten zum Entfernen aus
Bei Clustern, die mit den Image-Versionen 1.5.83 und höher, 2.0.57 und höher und 2.1.5 und höher erstellt wurden, versucht Dataproc bei der Herunterskalierung eines Clusters, die Auswirkungen des Entfernens von Knoten auf laufende YARN-Anwendungen zu minimieren. Dazu werden zuerst inaktive, nicht betriebsbereite und inaktive Knoten entfernt und dann die 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 Dataproc v 1.2 oder höher, können Sie die ordnungsgemäße Außerbetriebnahme nutzen, Ordnungsgemäße Außerbetriebnahme von YARN-Knoten Sie können die laufende Arbeit an einem Worker beenden, bevor er aus der Cloud entfernt wird. Dataproc-Cluster
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, erhalten Sie möglicherweise eine Fehlermeldung wie die folgende:
"Die sekundäre Worker-Gruppe kann nicht außerhalb von Dataproc 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.
Beachten Sie außerdem Folgendes:
- Sie können präemptive Worker jederzeit zwangsweise außer Betrieb nehmen.
- Primäre Worker werden immer ordnungsgemäß außer Betrieb genommen.
Ordnungsgemäße Außerbetriebnahme anwenden
Die ordnungsgemäße Außerbetriebnahme von Dataproc umfasst auch die ordnungsgemäße Außerbetriebnahme von YARN-Knoten. Damit werden laufende Aufgaben für einen Worker beendet, bevor sie aus dem Cloud Dataproc-Cluster entfernt werden. 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 die Schaltfläche Bearbeiten. Klicken Sie im Abschnitt Ordnungsgemäße Außerbetriebnahme das Kästchen "Ordnungsgemäße Außerbetriebnahme verwenden" an und wählen Sie ein Zeitlimit aus. Klicken Sie auf Speichern, um den Cluster zu aktualisieren.Skalierungsvorgang für die ordnungsgemäße Außerbetriebnahme abbrechen
Bei Dataproc-Clustern, die mit den Image-Versionen 2.0.57 oder höher oder 2.1.5 oder höher erstellt wurden, können Sie den Befehl gcloud dataproc operations cancel
oder eine Dataproc API-Anfrage operations.cancel
senden, um einen ordnungsgemäßen Deaktivierungsvorgang abzubrechen.
Wenn Sie einen Downscaling-Vorgang bei der ordnungsgemäßen Außerbetriebnahme abbrechen, geschieht Folgendes:
Worker im Status
DECOMMISSIONING
werden wieder in Betrieb genommen und erhalten den StatusACTIVE
, sobald die Stornierung des Vorgangs abgeschlossen ist.Wenn der Downscaling-Vorgang Labelupdates umfasst, werden diese möglicherweise nicht wirksam.
Sie können den Status der Stornierungsanfrage mit dem Befehl gcloud dataproc operations describe
oder mit einer Dataproc API-Anfrage vom Typ operations.get
prüfen. Wenn der Abbruchvorgang erfolgreich ist, wird der Status des inneren Vorgangs markiert.
als CANCELLED.