Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Dieses Dokument enthält Informationen zum Autoscaling von Google Cloud Serverless für Apache Spark.
Wenn Sie Ihre Spark-Arbeitslast senden, kann Serverless for Apache Spark die Arbeitslastressourcen wie die Anzahl der Executors dynamisch skalieren, um Ihre Arbeitslast effizient auszuführen. Das Autoscaling für Serverless for Apache Spark ist das Standardverhalten und verwendet die dynamische Ressourcenzuweisung von Spark, um zu bestimmen, ob, wie und wann Ihre Arbeitslast skaliert werden soll.
Autoscaling von Serverless for Apache Spark V2
Die Autoscaling-Version 2 (V2) von Serverless for Apache Spark bietet zusätzliche Funktionen und Verbesserungen im Vergleich zur Standardversion 1 (V1). So können Sie Serverless for Apache Spark-Arbeitslasten besser verwalten, die Arbeitslastleistung verbessern und Kosten sparen:
Asynchrone Knotenskalierung: Bei Autoscaling V2 wird die synchrone Skalierung von V1 durch asynchrone Skalierung ersetzt. Beim asynchronen Herunterskalieren werden die Ressourcen von Serverless for Apache Spark für Arbeitslasten herunterskaliert, ohne dass auf den Abschluss der Shuffle-Migration auf allen Knoten gewartet wird. Das bedeutet, dass Longtail-Knoten, die langsam herunterskaliert werden, das Hochskalieren nicht blockieren.
Intelligente Auswahl von Knoten zum Herunterskalieren: Bei Autoscaling V2 wird die zufällige Knotenauswahl von V1 durch einen intelligenten Algorithmus ersetzt, der die besten Knoten zum Herunterskalieren ermittelt. Dieser Algorithmus berücksichtigt Faktoren wie die Größe der Shuffle-Daten des Knotens und die Leerlaufzeit.
Konfigurierbares Verhalten für die ordnungsgemäße Außerbetriebnahme und die Shuffle-Migration von Spark: Mit Autoscaling V2 können Sie Standard-Spark-Attribute verwenden, um die ordnungsgemäße Außerbetriebnahme und die Shuffle-Migration von Spark zu konfigurieren. Mit dieser Funktion können Sie die Migrationskompatibilität mit Ihren benutzerdefinierten Spark-Attributen aufrechterhalten.
Autoscaling-Funktionen von Serverless for Apache Spark
Funktion
Serverless for Apache Spark-Autoscaling V1
Serverless for Apache Spark Autoscaling V2
Herunterskalieren von Knoten
Synchron
Asynchron
Knotenauswahl für das Herunterskalieren
Zufällig
Intelligent
Ordnungsgemäße Außerbetriebnahme von Spark und Shuffle-Migration
Nicht konfigurierbar
Konfigurierbar
Attribute für die dynamische Zuordnung von Spark
In der folgenden Tabelle sind die Attribute für die dynamische Spark-Zuweisung aufgeführt, die Sie beim Einreichen einer Batcharbeitslast festlegen können, um die automatische Skalierung zu steuern (Spark-Attribute festlegen).
Ob die dynamische Ressourcenzuweisung verwendet werden soll, bei der die Anzahl der Executors basierend auf der Arbeitslast skaliert wird.
Wenn Sie den Wert auf false festlegen, wird das Autoscaling für die Arbeitslast deaktiviert. Standardeinstellung: true
true
spark.dynamicAllocation.initialExecutors
Die anfängliche Anzahl von Executors, die dem Arbeitslast zugewiesen werden. Nach dem Start des Arbeitslast kann die Anzahl der aktiven Executors durch Autoscaling geändert werden.
Der Mindestwert beträgt 2, der Höchstwert 2000.
2
spark.dynamicAllocation.minExecutors
Die Mindestanzahl von Executors, auf die die Arbeitslast herunterskaliert werden soll.
Der Mindestwert beträgt 2.
2
spark.dynamicAllocation.maxExecutors
Die maximale Anzahl von Executors, auf die die Arbeitslast skaliert werden soll.
Der Höchstwert beträgt 2000.
1000
spark.dynamicAllocation.executorAllocationRatio
Passt die Aufwärtsskalierung der Spark-Arbeitslast an. Akzeptiert einen Wert von 0 bis 1. Ein Wert von 1.0 bietet maximale Skalierbarkeit und trägt zur maximalen Parallelität bei. Ein Wert von 0.5 legt die Skalierbarkeit und Parallelität auf die Hälfte des Maximalwerts fest.
0.3
spark.reducer.fetchMigratedShuffle.enabled
Wenn diese Option auf true gesetzt ist, wird der Speicherort der Shuffle-Ausgabe vom Spark-Treiber abgerufen, nachdem ein Abruf von einem Executor fehlgeschlagen ist, der aufgrund der dynamischen Zuordnung von Spark außer Betrieb genommen wurde. Dadurch werden ExecutorDeadException-Fehler reduziert, die durch die Migration von Shuffle-Blöcken von außer Betrieb genommenen Executors zu aktiven Executors verursacht werden, und die Anzahl der Wiederholungsversuche von Phasen, die durch FetchFailedException-Fehler verursacht werden, wird verringert (siehe FetchFailedException caused by ExecutorDeadException).
Diese Eigenschaft ist in Serverless für Apache Spark Spark-Laufzeitversionen1.1.12 und höher sowie 2.0.20 und höher verfügbar.
false
Messwerte für die dynamische Zuordnung von Spark
Bei Spark-Batcharbeitslasten werden die folgenden Messwerte für die dynamische Ressourcenzuweisung von Spark generiert. Weitere Informationen zu Spark-Messwerten finden Sie unter Monitoring und Instrumentierung.
Messwert
Beschreibung
maximum-needed
Die maximale Anzahl von Executors, die unter der aktuellen Last erforderlich sind, um alle laufenden und ausstehenden Aufgaben zu erfüllen.
running
Die Anzahl der laufenden Executors, die Aufgaben ausführen.
Probleme mit der dynamischen Zuordnung von Spark und Lösungen
FetchFailedException durch ExecutorDeadException
Ursache: Wenn die dynamische Zuordnung von Spark einen Executor herunterskaliert, wird die Shuffle-Datei zu aktiven Executors migriert. Da die Spark-Reducer-Aufgabe auf einem Executor jedoch Shuffle-Ausgabe vom Speicherort abruft, der vom Spark-Treiber beim Starten der Reducer-Aufgabe festgelegt wurde, kann der Reducer weiterhin versuchen, Shuffle-Ausgabe von einem außer Betrieb genommenen Executor abzurufen, wenn eine Shuffle-Datei migriert wird. Dies führt zu ExecutorDeadException- und FetchFailedException-Fehlern.
Lösung: Aktivieren Sie das erneute Abrufen des Shuffle-Standorts, indem Sie spark.reducer.fetchMigratedShuffle.enabled auf true setzen, wenn Sie Ihre Serverless for Apache Spark-Batcharbeitslast ausführen (siehe Attribute für Spark-Batcharbeitslast festlegen).
Wenn diese Eigenschaft aktiviert ist, ruft die Reducer-Aufgabe den Speicherort der Shuffle-Ausgabe nach einem fehlgeschlagenen Abruf von einem außer Betrieb genommenen Executor noch einmal vom Treiber ab.
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-08-25 (UTC)."],[[["\u003cp\u003eDataproc Serverless for Spark uses dynamic resource allocation to automatically scale workload resources, such as the number of executors, for efficient processing.\u003c/p\u003e\n"],["\u003cp\u003eAutoscaling V2 is an improved version of the default V1 and offers asynchronous node downscaling, intelligent node selection for downscaling, and configurable Spark graceful decommissioning and shuffle migration behavior.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003espark.dataproc.scaling.version\u003c/code\u003e property controls whether autoscaling V1 or V2 is active, and setting it to \u003ccode\u003e2\u003c/code\u003e enables V2's enhanced features.\u003c/p\u003e\n"],["\u003cp\u003eVarious Spark dynamic allocation properties, such as \u003ccode\u003espark.dynamicAllocation.minExecutors\u003c/code\u003e and \u003ccode\u003espark.dynamicAllocation.maxExecutors\u003c/code\u003e, can be configured to control autoscaling behavior when submitting a batch workload.\u003c/p\u003e\n"],["\u003cp\u003eSetting \u003ccode\u003espark.reducer.fetchMigratedShuffle.enabled\u003c/code\u003e to \u003ccode\u003etrue\u003c/code\u003e mitigates \u003ccode\u003eExecutorDeadException\u003c/code\u003e and \u003ccode\u003eFetchFailedException\u003c/code\u003e errors by allowing reducers to refetch shuffle output locations after an executor is decommissioned.\u003c/p\u003e\n"]]],[],null,["# Serverless for Apache Spark autoscaling\n\nThis document provides information about Google Cloud Serverless for Apache Spark autoscaling.\nWhen you submit your Spark workload, Serverless for Apache Spark\ncan dynamically scale workload resources, such as the number of executors,\nto run your workload efficiently. Serverless for Apache Spark autoscaling is the\ndefault behavior, and uses\n[Spark dynamic resource allocation](https://spark.apache.org/docs/latest/job-scheduling.html#dynamic-resource-allocation)\nto determine whether, how, and when to scale your workload.\n\nServerless for Apache Spark autoscaling V2\n------------------------------------------\n\nServerless for Apache Spark autoscaling version 2 (V2) adds features and improvements\nto default version 1 (V1) to help you manage Serverless for Apache Spark workloads, improve\nworkload performance, and save costs:\n\n- **Asynchronous node downscaling**: Autoscaling V2 replaces V1's synchronous downscaling with asynchronous downscaling. Using asynchronous downscaling, Serverless for Apache Spark downscales workload resources without waiting for all nodes to finish shuffle migration. This means that long-tail nodes that scale down slowly won't block upscaling.\n- **Intelligent scaling down node selection**: Autoscaling V2 replaces V1's random node selection with an intelligent algorithm that identifies the best nodes to scale down first. This algorithm considers factors such as the node's shuffle data size and idle time.\n- **Configurable Spark grace decommission and shuffle migration behavior**: Autoscaling V2 lets you use standard Spark properties to configure Spark graceful decommissioning and shuffle migration. This feature can help you maintain migration compatibility with your customized Spark properties.\n\n| **Note:** Set the `spark.dataproc.scaling.version=2` property to enable Serverless for Apache Spark autoscaling V2 when you [submit a Spark batch workload](/dataproc-serverless/docs/quickstarts/spark-batch#submit_a_spark_batch_workload).\n\n### Serverless for Apache Spark autoscaling features\n\nSpark dynamic allocation properties\n-----------------------------------\n\nThe following table lists\n[Spark Dynamic Allocation](https://spark.apache.org/docs/latest/configuration.html#dynamic-allocation)\nproperties that you can set when you submit a batch workload to control autoscaling (see\n[how to set Spark properties](/dataproc-serverless/docs/concepts/properties)).\n| **Note:** Also see [Spark properties](/dataproc-serverless/docs/concepts/properties), which describes additional properties that you can set when you submit a Serverless for Apache Spark Spark batch workload.\n\nSpark dynamic allocation metrics\n--------------------------------\n\nSpark batch workloads generate the following metrics related to Spark dynamic\nresource allocation (for additional information on Spark metrics, see\n[Monitoring and Instrumentation](https://spark.apache.org/docs/latest/monitoring.html)).\n| **Note:** See [Spark metrics](/dataproc-serverless/docs/concepts/metrics), which describes properties you can set to control the collection of Spark metrics.\n\nSpark dynamic allocation issues and solutions\n---------------------------------------------\n\n- **FetchFailedException caused by ExecutorDeadException**\n\n Cause: When Spark dynamic allocation scales down an executor, the shuffle file is migrated to\n live executors. However, since the Spark reducer task on an executor fetches shuffle\n output from the location set by the Spark driver when the reducer task started, if\n a shuffle file is migrated, the reducer can continue to attempt to\n fetch shuffle output from a decommissioned executor, causing `ExecutorDeadException`\n and `FetchFailedException` errors.\n\n Solution: Enable shuffle location refetching by setting\n the `spark.reducer.fetchMigratedShuffle.enabled` to `true` when you run your\n Serverless for Apache Spark batch workload (see\n [Set Spark batch workload properties](/dataproc-serverless/docs/concepts/properties#set_spark_batch_workload_properties)).\n When this property is enabled, the reducer task refetches the shuffle output\n location from the driver after a fetch from a decommissioned executor fails."]]