Nachdem Sie einen Managed Service for Apache Spark-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. Managed Service for Apache Spark-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, migrieren Sie dann Jobs zum neuen Cluster.
Sie können einen Managed Service for Apache Spark-Cluster für Folgendes skalieren:
- Erhöhen der Anzahl der 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 Hadoop Distributed File System (HDFS)-Speicher zu erweitern.
Da Cluster mehrmals skaliert werden können, kann es sinnvoll sein, die Clustergröße einmalig zu erhöhen oder zu verringern und dann zu einem späteren Zeitpunkt zu verringern oder zu erhöhen.
Empfehlungen:
Worker vorsichtig entfernen: Sorgen Sie beim Entfernen von Workern aus dem Cluster dafür, dass die neue Clustergröße ausreichend groß ist, um den Workload zu bewältigen. Andernfalls kann die Verarbeitung Ihrer Jobs ungewöhnlich lange dauern oder hängen bleiben.
Primäre Worker nicht skalieren:HDFS-Knotenknoten werden von primären Workern ausgeführt, sekundäre Worker dagegen nur Computing-Worker. Die Skalierung primärer Worker birgt Risiken. Beispielsweise können HDFS-NameNodes während Skalierungsvorgängen mehrere Race-Bedingungen aufweisen, 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 Primäre Worker nicht skalieren.
Skalierung verwenden
Es gibt drei Möglichkeiten, Ihren Managed Service for Apache Spark-Cluster zu skalieren:
- Verwenden Sie das
gcloudBefehlszeilentool in der gcloud CLI. - 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
Führen Sie den folgenden Befehl aus, um einen Cluster mitgcloud dataproc clusters update,
zu skalieren:
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, wechseln Sie zur Seite Google Cloud Console Cluster 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.
Auswahl von Clusterknoten zum Entfernen durch Managed Service for Apache Spark
Bei Clustern, die mit 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 v 1.2 oder höher verwenden, können Sie die ordnungsgemäße Außerbetriebnahme verwenden, einschließlich der ordnungsgemäßen Außerbetriebnahme von YARN-Knoten. Damit werden laufende Aufgaben für einen Worker beendet, bevor sie aus dem Cloud Managed Service for Apache Spark-Cluster entfernt werden.
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 ähnliche Fehlermeldung erhalten:
"Die sekundäre
Worker-Gruppe 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 auch die ordnungsgemäße Außerbetriebnahme von YARN-Knoten. Damit werden laufende Aufgaben für einen Worker beendet, bevor sie aus dem Managed Service for Apache Spark-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 Google Cloud console Clusters in der Console und öffnen die Seite Cluster details für den betreffenden Cluster. Klicken Sie dann auf dem Tab Configuration auf den Button Edit.
Wählen Sie im Abschnitt Ordnungsgemäße Außerbetriebnahme die Option
Ordnungsgemäße Außerbetriebnahme verwenden aus und wählen Sie dann einen Zeitüberschreitungswert aus.
Klicken Sie auf Speichern , um den Cluster zu aktualisieren.
Herunterskalierungsvorgang mit ordnungsgemäßer Außerbetriebnahme abbrechen
Bei Managed Service for Apache Spark-Clustern, die mit Image-Versionen
2.0.57+
oder 2.1.5+,
erstellt wurden, können Sie den gcloud dataproc operations cancel
Befehl ausführen oder eine Managed Service for Apache Spark API
operations.cancel
Anfrage senden, um einen Herunterskalierungsvorgang mit ordnungsgemäßer Außerbetriebnahme abzubrechen.
Wenn Sie einen Scaledown-Vorgang zur ordnungsgemäßen Außerbetriebnahme abbrechen:
Worker im Status
DECOMMISSIONINGwerden wieder in Betrieb genommen und haben nach Abschluss des Abbruchs des Vorgangs den StatusACTIVE.Wenn der Herunterskalierungsvorgang Label-Updates umfasst, werden die Updates möglicherweise nicht übernommen.
Sie können den Status der Abbruchanfrage mit dem
Befehl gcloud dataproc operations describe
oder einer
operations.get
Anfrage der Managed Service for Apache Spark API überprüfen. Wenn der Abbruchvorgang erfolgreich ist, wird der Status des inneren Vorgangs als CANCELLED markiert.