In diesem Dokument werden Spark-Attribute und deren Festlegung beschrieben. Managed Service for Apache Spark verwendet Spark-Attribute, um die Compute-, Arbeitsspeicher- und Laufwerkressourcen zu bestimmen, die Ihrer Batcharbeitslast zugewiesen werden sollen. Diese Attributseinstellungen können sich auf den Verbrauch von Arbeitslastkontingenten und die Kosten auswirken. Weitere Informationen finden Sie unter Kontingente für Managed Service for Apache Spark und Preise für Managed Service for Apache Spark.
Attribute für Spark-Batcharbeitslasten festlegen
Console
Wechseln Sie in der Google Cloud console zur Managed Service for Apache Spark-Batch erstellen Seite.
Klicken Sie im Abschnitt Attribute auf Attribut hinzufügen.
Geben Sie den
Key(Namen) und denValueeines unterstützten Spark-Attributs ein.
gcloud
Im Folgenden finden Sie ein Beispiel für die Batchübermittlung über die gcloud CLI. Mehrere Attribute werden durch Kommas getrennt.
gcloud dataproc batches submit spark \ --properties=spark.checkpoint.compress=true,spark.driver.cores=8 \ --region=REGION \ other args ...
API
Legen Sie RuntimeConfig.properties mit unterstützten Spark-Attributen als Teil einer batches.create -Anfrage fest.
Unterstützte Spark-Attribute
Managed Service for Apache Spark unterstützt die meisten Spark-Attribute, aber keine YARN- und Shuffle-bezogenen Spark-Attribute wie spark.master=yarn und spark.shuffle.service.enabled. Wenn im Spark-Anwendungscode ein YARN- oder Shuffle-Attribut festgelegt wird, schlägt die Anwendung fehl.
Attribute der Laufzeitumgebung
Managed Service for Apache Spark unterstützt die folgenden benutzerdefinierten Spark-Attribute zum Konfigurieren der Laufzeitumgebung:
| Attribut | Beschreibung |
|---|---|
spark.dataproc.driverEnv.ENVIRONMENT_VARIABLE_NAME |
Fügen Sie ENVIRONMENT_VARIABLE_NAME dem Treiberprozess hinzu. Sie können mehrere Umgebungsvariablen angeben. |
spark.executorEnv.ENVIRONMENT_VARIABLE_NAME |
Fügen Sie dem Executorprozess ENVIRONMENT_VARIABLE_NAME hinzu. Sie können mehrere Umgebungsvariablen angeben. |
Stufenattribut
| Attribut | Beschreibung | Standard |
|---|---|---|
dataproc.tier |
Die Stufe, auf der eine Batcharbeitslast ausgeführt wird, entweder standard oder premium (siehe Managed Service for Apache Spark-Stufen). Interaktive
Sitzungen werden immer auf der Premium-Stufe dataproc.tier ausgeführt.
|
standard |
Attribute für Engine und Laufzeit
| Attribut | Beschreibung | Standard |
|---|---|---|
spark.dataproc.engine |
Die Engine, die zum Ausführen der Batcharbeitslast oder der interaktiven Sitzung verwendet werden soll: entweder lightningEngine
(siehe Lightning Engine) oder die default-Engine.
|
|
spark.dataproc.lightningEngine.runtime |
Die Laufzeit, die verwendet werden soll, wenn Lightning Engine für eine Batcharbeitslast oder interaktive Sitzung ausgewählt ist: default oder native (Native Query Execution).
|
default |
Attribute für die Ressourcenzuweisung
Managed Service for Apache Spark unterstützt die folgenden Spark-Attribute zum Konfigurieren der Ressourcenzuweisung:
| Attribut | Beschreibung | Standard | Beispiele |
|---|---|---|---|
spark.driver.cores |
Die Anzahl der Kerne (vCPUs), die dem Spark-Treiber zugewiesen werden sollen.
Gültige Werte: 4, 8, 16. |
4 |
|
spark.driver.memory |
Die Menge an Arbeitsspeicher, die dem Spark-Treiberprozess zugewiesen werden soll, angegeben im JVM-Arbeitsspeicherstringformat mit einem Suffix für die Größeneinheit („m“, „g“ oder „t“). Der gesamte Treiberspeicher pro Treiberkern, einschließlich des Treiberspeicher-Overheads,
der für die
Compute-Stufe „Standard“ zwischen |
512m, 2g |
|
spark.driver.memoryOverhead |
Die Menge an zusätzlichem JVM-Arbeitsspeicher, die dem Spark-Treiber Prozess zugewiesen werden soll, angegeben im JVM-Arbeitsspeicherstringformat mit einem Suffix für die Größeneinheit ("m", "g" oder "t"). Dies ist nicht Heap-Arbeitsspeicher, der mit JVM-Overheads,
interne Strings und andere native Overheads verbunden ist. Er umfasst auch den Arbeitsspeicher, der von anderen Treiberprozessen verwendet wird, z. B. PySpark-Treiberprozessen
und den Arbeitsspeicher, der von anderen Nicht-Treiberprozessen verwendet wird, die im Container ausgeführt werden.
Die maximale Arbeitsspeichergröße des Containers, in dem der Treiber ausgeführt wird, wird durch die Summe von Der gesamte Treiberspeicher pro Treiberkern, einschließlich des Treiberspeicher-Overheads,
muss für die
Compute-Stufe „Standard“ zwischen |
10% des Treiberspeichers, mit Ausnahme von PySpark-Batcharbeitslasten, bei denen standardmäßig 40% des Treiberspeichers verwendet werden | 512m, 2g |
spark.dataproc.driver.compute.tier |
Die Compute-Stufe, die für den Treiber verwendet werden soll. Die Compute-Stufe „Premium“ bietet eine höhere Leistung pro Kern, wird aber zu einem höheren Preis abgerechnet. | Standard | Standard, Premium |
spark.dataproc.driver.disk.size |
Die Menge an Speicherplatz, die dem Treiber zugewiesen wird,
angegeben mit einem Suffix für die Größeneinheit („k“, „m“, „g“ oder „t“).
Muss mindestens 250GiB betragen.
Wenn die Premium-Stufe für das Laufwerk auf dem Treiber ausgewählt ist, sind die folgenden Größen gültig:
375 g, 750 g, 1.500 g, 3.000 g, 6.000 g oder 9.000 g. Wenn die Premium
Stufe für das Laufwerk und 16 Treiberkerne ausgewählt sind,
beträgt die Mindestgröße des Laufwerks 750 g. |
100GiB pro Kern |
1024g, 2t |
spark.dataproc.driver.disk.tier |
Die Laufwerkstufe, die für den lokalen Speicher und den Shuffle-Speicher auf dem Treiber verwendet werden soll.
Die Premium-Stufe für das Laufwerk bietet eine bessere Leistung in Bezug auf IOPS und Durchsatz, wird aber
zu einem höheren Preis abgerechnet. Wenn die Premium-Stufe für das Laufwerk auf dem Treiber ausgewählt ist, muss auch die Premium-Stufe für die Compute-Ressourcen mit spark.dataproc.driver.compute.tier=premium ausgewählt werden. Die Menge an Speicherplatz muss mit spark.dataproc.executor.disk.size angegeben werden.
Wenn die Premium-Stufe für das Laufwerk ausgewählt ist, weist der Treiber zusätzlich 50 GiB Speicherplatz für den Systemspeicher zu, der von Nutzeranwendungen nicht verwendet werden kann. |
Standard | Standard, Premium |
spark.executor.cores |
Die Anzahl der Kerne (vCPUs), die jedem Spark-Executor zugewiesen werden sollen.
Gültige Werte: 4, 8, 16. |
4 |
|
spark.executor.memory |
Die Menge an Arbeitsspeicher, die jedem Spark-Executorprozess zugewiesen werden soll, angegeben im JVM-Arbeitsspeicherstringformat mit einem Suffix für die Größeneinheit („m“, „g“ oder „t“). Der gesamte Executorspeicher pro Executor-Kern, einschließlich des Executorspeicher
Overheads, muss für
die Compute-Stufe „Standard“ zwischen |
512m, 2g |
|
spark.executor.memoryOverhead |
Die Menge an zusätzlichem JVM-Arbeitsspeicher, die dem Spark Executorprozess zugewiesen werden soll, angegeben im JVM-Arbeitsspeicherstringformat mit einem Suffix für die Größeneinheit ("m", "g" oder "t"). Dies ist nicht Heap-Arbeitsspeicher, der für JVM-Overheads, interne Strings,
und andere native Overheads verwendet wird. Er umfasst auch den PySpark-Executorspeicher und den
Arbeitsspeicher, der von anderen Nicht-Executorprozessen verwendet wird, die im Container ausgeführt werden.
Die maximale Arbeitsspeichergröße des Containers, in dem der Executor ausgeführt wird, wird durch die Summe von Der gesamte Executorspeicher pro Executor-Kern, einschließlich des Executorspeicher-Overheads, muss für die Compute-Stufe „Standard“ zwischen |
10% des Executorspeichers, mit Ausnahme von PySpark-Batcharbeitslasten, bei denen standardmäßig 40% des Executorspeichers verwendet werden | 512m, 2g |
spark.dataproc.executor.compute.tier |
Die Compute-Stufe, die für die Executors verwendet werden soll. Die Compute-Stufe „Premium“ bietet eine höhere Leistung pro Kern, wird aber zu einem höheren Preis abgerechnet. | Standard | Standard, Premium |
spark.dataproc.executor.disk.size |
Die Menge an Speicherplatz, die jedem Executor zugewiesen wird,
angegeben mit einem Suffix für die Größeneinheit („k“, „m“, „g“ oder „t“).
Der Speicherplatz des Executors kann für Shuffle-Daten und zum Staging von
Abhängigkeiten verwendet werden. Muss mindestens 250GiB betragen.
Wenn die Premium-Stufe für das Laufwerk auf dem Executor ausgewählt ist, sind die folgenden Größen gültig:
375 g, 750 g, 1.500 g, 3.000 g, 6.000 g oder 9.000 g. Wenn die Premium
Stufe für das Laufwerk und 16 Executor-Kerne ausgewählt sind,
beträgt die Mindestgröße des Laufwerks 750 g. |
100GiB pro Kern |
1024g, 2t |
spark.dataproc.executor.disk.tier |
Die Laufwerkstufe, die für den lokalen Speicher und den Shuffle-Speicher auf den Executors verwendet werden soll.
Die Premium-Stufe für das Laufwerk bietet eine bessere Leistung in Bezug auf IOPS und Durchsatz, wird aber
zu einem höheren Preis abgerechnet. Wenn die Premium-Stufe für das Laufwerk auf dem Executor ausgewählt ist, muss auch die Premium-Stufe für die Compute-Ressourcen mit spark.dataproc.executor.compute.tier=premium ausgewählt werden. Die Menge an Speicherplatz muss mit spark.dataproc.executor.disk.size angegeben werden.
Wenn die Premium-Stufe für das Laufwerk ausgewählt ist, werden jedem Executor zusätzlich 50 GiB Speicherplatz für den Systemspeicher zugewiesen, der von Nutzeranwendungen nicht verwendet werden kann. |
Standard | Standard, Premium |
spark.executor.instances |
Die anfängliche Anzahl der zuzuweisenden Executors. Nach dem Start einer Batcharbeitslast
kann die Anzahl der aktiven Executors durch Autoscaling geändert werden. Muss
mindestens 2 und höchstens 2000 betragen. |
Autoscaling-Attribute
Unter Spark-Attribute für die dynamische Zuweisung finden Sie eine Liste der Spark-Attribute, mit denen Sie das Autoscaling von Managed Service for Apache Spark konfigurieren können.
Logging-Attribute
| Attribut | Beschreibung | Standard | Beispiele |
|---|---|---|---|
spark.log.level |
Wenn festgelegt, werden alle benutzerdefinierten Protokolleinstellungen überschrieben, was einem Aufruf von
SparkContext.setLogLevel() beim Start von Spark entspricht. Gültige
Protokollebenen sind: ALL, DEBUG, ERROR,
FATAL, INFO, OFF, TRACE,
und WARN. |
INFO, DEBUG |
|
spark.executor.syncLogLevel.enabled |
Wenn auf true gesetzt, wird die mit der Methode
die SparkContext.setLogLevel() angewendete Protokollebene an alle Executors weitergegeben. |
false |
true, false |
spark.log.level.PackageName |
Wenn festgelegt, werden alle benutzerdefinierten Protokolleinstellungen überschrieben
was einem Aufruf von SparkContext.setLogLevel(PackageName, level)
beim Start von Spark entspricht. Gültige Protokollebenen sind: ALL, DEBUG,
ERROR, FATAL, INFO, OFF,
TRACE und WARN. |
spark.log.level.org.apache.spark=error |
Planungsattribute
| Attribut | Beschreibung | Standard | Beispiele |
|---|---|---|---|
spark.scheduler.excludeShuffleSkewExecutors |
Schließt beim Planen Executors mit ungleichmäßiger Shuffle-Map aus. Dadurch können lange Wartezeiten für das Abrufen von Shuffle-Daten reduziert werden, die durch eine ungleichmäßige Shuffle-Schreibweise verursacht werden. | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
Mindestanzahl abgeschlossener Shuffle-Map-Aufgaben auf einem Executor die als ungleichmäßig behandelt werden sollen. | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
Maximale Anzahl von Executors, die als ungleichmäßig behandelt werden sollen. Ungleichmäßige Executors werden von der aktuellen Planungsrunde ausgeschlossen. | 5 | 10 |
spark.scheduler.shuffleSkew.maxExecutorsRatio |
Maximales Verhältnis der Gesamtzahl der Executors, die als ungleichmäßig behandelt werden sollen. Ungleichmäßige Executors werden von der Planung ausgeschlossen. | 0,05 | 0.1 |
spark.scheduler.shuffleSkew.ratio |
Ein Vielfaches der durchschnittlichen Anzahl abgeschlossener Shuffle-Map-Aufgaben auf einem Executor, die als ungleichmäßig behandelt werden sollen. | 1,5 | 2.0 |
Weitere Eigenschaften
| Attribut | Beschreibung |
|---|---|
dataproc.diagnostics.enabled |
**Wird nur in Laufzeiten der Version 2.3 und früher unterstützt**. Aktivieren Sie dieses Attribut, um Diagnosen bei einem Fehler oder einer Abbruch einer Batcharbeitslast auszuführen. Wenn die Diagnose aktiviert ist, werden für Ihre Batcharbeitslast auch nach Abschluss der Arbeitslast Compute-Ressourcen verwendet, bis die Diagnose abgeschlossen ist. Ein URI, der auf den Speicherort der Tar-Datei mit den Diagnosedaten verweist, ist im Batch.RuntimeInfo.diagnosticOutputUri API-Feld aufgeführt. |
dataproc.gcsConnector.version |
**Wird nur in Laufzeiten der Version 2.3 und früher unterstützt**. Mit diesem Attribut können Sie auf eine Cloud Storage-Connectorversion aktualisieren, die sich von der Version unterscheidet, die mit der Laufzeitversion Ihrer Batcharbeitslast installiert wurde. |
dataproc.sparkBqConnector.version |
**Wird nur in Laufzeiten der Version 2.3 und früher unterstützt**. Mit diesem Attribut können Sie auf eine Spark-BigQuery-Connectorversion aktualisieren, die sich von der Version unterscheidet, die mit der Laufzeitversion Ihrer Batcharbeitslast installiert wurde (siehe BigQuery-Connector mit Managed Service for Apache Spark verwenden). |
dataproc.profiling.enabled |
**Wird nur in Laufzeiten der Version 2.3 und früher unterstützt**. Setzen Sie dieses Attribut auf true, um das Profiling für die
Managed Service for Apache Spark-Arbeitslast zu aktivieren. |
dataproc.profiling.name |
**Wird nur in Laufzeiten der Version 2.3 und früher unterstützt** Mit diesem Attribut können Sie den Namen festlegen, der zum Erstellen eines Profils im Profiler-Dienst verwendet wird. |
spark.jars |
Mit diesem Attribut können Sie die durch Kommas getrennte Liste der JAR-Dateien festlegen, die in die Klassenpfade des Treibers und des Executors aufgenommen werden sollen. |
spark.archives |
Mit diesem Attribut können Sie die durch Kommas getrennte Liste der Archive festlegen, die in das Arbeitsverzeichnis jedes Executors extrahiert werden sollen. Unterstützt werden die Formate .jar, .tar.gz, .tgz und .zip. Fügen Sie dieses Attribut beim Erstellen einer interaktiven Sitzung/Vorlage für serverlose interaktive Sitzungen hinzu. |
dataproc.artifacts.remove |
Mit diesem Attribut können Sie Standardartefakte entfernen, die in
Managed Service for Apache Spark-Laufzeiten installiert sind.
Unterstützte Artefakte sind conscrypt, delta-lake, iceberg, rapids und spark-bigquery-connector. |