In diesem Dokument werden Spark-Attribute und deren Festlegung beschrieben. Managed Service for Apache Spark verwendet Spark-Attribute, um die Rechen-, Arbeitsspeicher- und Speicherressourcen zu bestimmen, die Ihrer Batcharbeitslast zugewiesen werden sollen. Diese Property-Einstellungen können sich auf den Kontingentverbrauch und die Kosten für Arbeitslasten 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
Sie können Spark-Attribute angeben, wenn Sie eine Managed Service for Apache Spark-Batcharbeitslast über die Google Cloud Console, die gcloud CLI oder die Dataproc API senden.
Console
Rufen Sie in der Google Cloud Console die Seite Managed Service for Apache Spark – Batch erstellen auf.
Klicken Sie im Bereich Properties auf Property 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 mit der 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-Properties 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.
Eigenschaften der Laufzeitumgebung
Managed Service for Apache Spark unterstützt die folgenden benutzerdefinierten Spark-Properties 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 ENVIRONMENT_VARIABLE_NAME zum Executor-Prozess hinzu. Sie können mehrere Umgebungsvariablen angeben. |
Stufen-Property
| 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 |
Engine- und Laufzeitattribute
| 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 die Lightning Engine für eine Batcharbeitslast oder eine interaktive Sitzung ausgewählt ist: default oder native (Native Query Execution).
|
default |
Eigenschaften der Ressourcenzuweisung
Managed Service for Apache Spark unterstützt die folgenden Spark-Properties zum Konfigurieren der Ressourcenzuweisung:
| Attribut | Beschreibung | Standard | Beispiele |
|---|---|---|---|
spark.driver.cores |
Die Anzahl der Kerne (vCPUs), die dem Spark-Treiber zugewiesen werden sollen.
Zulässige Werte: 4, 8, 16. |
4 |
|
spark.driver.memory |
Die Größe des Arbeitsspeichers, der dem Spark-Treiberprozess zugewiesen werden soll, angegeben im JVM-Speicherstringformat mit einem Suffix für die Größeneinheit („m“, „g“ oder „t“). Gesamter Treiberspeicher pro Treiberkern, einschließlich Treiberspeicher-Overhead, der für die Standard-Rechenstufe zwischen |
512m, 2g |
|
spark.driver.memoryOverhead |
Die Menge an zusätzlichem JVM-Speicher, die dem Spark-Treiberprozess zugewiesen werden soll, angegeben im JVM-Speicherstringformat mit einem Suffix für die Größeneinheit („m“, „g“ oder „t“). Dies ist ein Nicht-Heap-Speicher, der mit JVM-Overheads, internen Strings und anderen nativen Overheads verknüpft ist. Er umfasst den von anderen Treiberprozessen wie PySpark-Treiberprozessen verwendeten Speicher und den von anderen Nicht-Treiberprozessen im Container verwendeten Speicher.
Die maximale Arbeitsspeichergröße des Containers, in dem der Treiber ausgeführt wird, wird durch die Summe von Der Gesamttreiberarbeitsspeicher pro Treiberkern, einschließlich des Treiberarbeitsspeicher-Overheads, muss für die Standard-Rechenstufe zwischen |
10 % des Treiberspeichers, mit Ausnahme von PySpark-Batcharbeitslasten, die standardmäßig 40 % des Treiberspeichers verwenden | 512m, 2g |
spark.dataproc.driver.compute.tier |
Die Computing-Stufe, die für den Treiber verwendet werden soll. Die Premium-Computing-Stufe bietet eine höhere Leistung pro Kern, wird aber zu einem höheren Preis abgerechnet. | Standard | standard, premium |
spark.dataproc.driver.disk.size |
Der dem Treiber zugewiesene Speicherplatz, angegeben mit einem Suffix für die Größeneinheit („k“, „m“, „g“ oder „t“).
Muss mindestens 250GiB sein.
Wenn die Premium-Laufwerksstufe auf dem Treiber ausgewählt ist, sind die gültigen Größen 375g, 750g, 1500g, 3000g, 6000g oder 9000g. Wenn die Premium-Laufwerksstufe und 16 Treiberkerne ausgewählt sind, beträgt die Mindestlaufwerksgröße 750 GB. |
100GiB pro Kern |
1024g, 2t |
spark.dataproc.driver.disk.tier |
Die Speicherstufe, die für den lokalen und Shuffle-Speicher auf dem Treiber verwendet werden soll.
Die Premium-Laufwerkstufe bietet eine bessere Leistung bei IOPS und Durchsatz, wird aber zu einem höheren Preis abgerechnet. Wenn die Premium-Laufwerksstufe für den Treiber ausgewählt ist, muss auch die Premium-Computing-Stufe mit spark.dataproc.driver.compute.tier=premium ausgewählt und der Speicherplatz mit spark.dataproc.executor.disk.size angegeben werden.
Wenn die Premium-Laufwerksstufe ausgewählt ist, weist der Treiber zusätzliche 50 GiB Speicherplatz für den Systemspeicher zu, der nicht von Nutzeranwendungen verwendet werden kann. |
Standard | standard, premium |
spark.executor.cores |
Die Anzahl der Kerne (vCPUs), die jedem Spark-Executor zugewiesen werden sollen.
Zulässige Werte: 4, 8, 16. |
4 |
|
spark.executor.memory |
Die Größe des Arbeitsspeichers, der jedem Spark-Executor-Prozess zugewiesen werden soll, angegeben im JVM-Arbeitsspeicher-Stringformat mit einem Suffix für die Größeneinheit („m“, „g“ oder „t“). Der gesamte Executor-Arbeitsspeicher pro Executor-Kern, einschließlich des Executor-Arbeitsspeicher-Overheads, muss für die Standard-Compute-Stufe zwischen |
512m, 2g |
|
spark.executor.memoryOverhead |
Die Menge an zusätzlichem JVM-Speicher, die dem Spark-Executor-Prozess zugewiesen werden soll, angegeben im JVM-Speicherstringformat mit einem Suffix für die Größeneinheit („m“, „g“ oder „t“). Dies ist ein Nicht-Heap-Speicher, der für JVM-Overheads, interne Strings und andere native Overheads verwendet wird. Er umfasst den PySpark-Executor-Speicher und den Speicher, der von anderen Nicht-Executor-Prozessen 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 Executor-Arbeitsspeicher pro Executor-Kern, einschließlich des Executor-Arbeitsspeicher-Overheads, muss für die Standard-Compute-Stufe zwischen |
10 % des Executor-Arbeitsspeichers, mit Ausnahme von PySpark-Batch-Arbeitslasten, die standardmäßig 40 % des Executor-Arbeitsspeichers verwenden | 512m, 2g |
spark.dataproc.executor.compute.tier |
Die Computing-Stufe, die für die Executors verwendet werden soll. Die Premium-Computing-Stufe bietet eine höhere Leistung pro Kern, wird aber zu einem höheren Preis abgerechnet. | Standard | standard, premium |
spark.dataproc.executor.disk.size |
Der jedem Executor zugewiesene Speicherplatz, 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 Bereitstellen von Abhängigkeiten verwendet werden. Muss mindestens 250GiB sein.
Wenn die Premium-Laufwerksstufe auf dem Executor ausgewählt ist, sind die gültigen Größen 375g, 750g, 1500g, 3000g, 6000g oder 9000g. Wenn die Premium-Laufwerksstufe und 16 Executor-Kerne ausgewählt sind, beträgt die Mindestlaufwerksgröße 750 g. |
100GiB pro Kern |
1024g, 2t |
spark.dataproc.executor.disk.tier |
Die Laufwerksstufe, die für lokalen und Shuffle-Speicher auf Executors verwendet werden soll.
Die Premium-Laufwerkstufe bietet eine bessere Leistung bei IOPS und Durchsatz, wird aber zu einem höheren Preis abgerechnet. Wenn die Premium-Laufwerksstufe auf dem Executor ausgewählt ist, muss auch die Premium-Rechenstufe mit spark.dataproc.executor.compute.tier=premium ausgewählt und die Menge an Speicherplatz mit spark.dataproc.executor.disk.size angegeben werden.
Wenn die Premium-Laufwerkstufe ausgewählt ist, wird jedem Executor zusätzliche 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 sein. |
Autoscaling-Attribute
Eine Liste der Spark-Attribute, mit denen Sie das Autoscaling von Managed Service for Apache Spark konfigurieren können, finden Sie unter Attribute für die dynamische Zuordnung von Spark.
Logging-Eigenschaften
| Attribut | Beschreibung | Standard | Beispiele |
|---|---|---|---|
spark.log.level |
Wenn diese Option festgelegt ist, werden alle benutzerdefinierten Logeinstellungen überschrieben. Dies hat die Auswirkung eines Aufrufs von SparkContext.setLogLevel() beim Spark-Start. Gültige Logebenen sind: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE und WARN. |
INFO, DEBUG |
|
spark.executor.syncLogLevel.enabled |
Wenn der Wert auf true gesetzt ist, wird die mit der Methode SparkContext.setLogLevel() angewendete Logebene an alle Executors weitergegeben. |
false |
true, false |
spark.log.level.PackageName |
Wenn diese Option festgelegt ist, werden alle benutzerdefinierten Logeinstellungen überschrieben. Dies hat die Wirkung eines Aufrufs von SparkContext.setLogLevel(PackageName, level) beim Start von Spark. Gültige Logebenen sind: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE und WARN. |
spark.log.level.org.apache.spark=error |
Planungseigenschaften
| Attribut | Beschreibung | Standard | Beispiele |
|---|---|---|---|
spark.scheduler.excludeShuffleSkewExecutors |
Schließen Sie beim Planen Executor mit verzerrter Shuffle-Zuordnung aus. Dadurch können lange Wartezeiten beim Abrufen von Shuffle-Daten reduziert werden, die durch eine Verzerrung beim Shuffle-Schreiben verursacht werden. | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
Mindestanzahl abgeschlossener Shuffle-Map-Aufgaben auf einem Executor, die als Schiefe behandelt werden sollen. | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
Maximale Anzahl von Executors, die als Schiefe behandelt werden sollen. Verzerrte Executors werden von der aktuellen Planungsrunde ausgeschlossen. | 5 | 10 |
spark.scheduler.shuffleSkew.maxExecutorsRatio |
Maximales Verhältnis der Gesamtzahl der Executors, die als Schiefe behandelt werden sollen. Verzerrte Executors werden von der Planung ausgeschlossen. | 0,05 | 0.1 |
spark.scheduler.shuffleSkew.ratio |
Ein Vielfaches der durchschnittlichen abgeschlossenen Shuffle-Map-Aufgaben auf einem Executor, die als Schiefe behandelt werden sollen. | 1,5 | 2.0 |
Weitere Eigenschaften
| Attribut | Beschreibung |
|---|---|
dataproc.diagnostics.enabled |
**Nur in Laufzeiten der Version 2.3 und früher unterstützt**. Aktivieren Sie dieses Attribut, um eine Diagnose bei einem Fehler oder Abbruch einer Batcharbeitslast auszuführen. Wenn die Diagnose aktiviert ist, verwendet Ihre Batcharbeitslast nach Abschluss der Arbeitslast weiterhin Rechenressourcen, bis die Diagnose abgeschlossen ist. Ein URI, der auf den Speicherort der TAR-Diagnosedatei verweist, wird im API-Feld Batch.RuntimeInfo.diagnosticOutputUri aufgeführt. |
dataproc.gcsConnector.version |
**Nur in Laufzeiten der Version 2.3 und früher unterstützt**. Verwenden Sie dieses Attribut, um ein Upgrade auf eine Cloud Storage-Connector-Version durchzuführen, die sich von der Version unterscheidet, die mit der Laufzeitversion Ihrer Batcharbeitslast installiert wurde. |
dataproc.sparkBqConnector.version |
**Nur in Laufzeiten der Version 2.3 und früher unterstützt**. Verwenden Sie dieses Attribut, um ein Upgrade auf eine Spark BigQuery-Connector-Version durchzuführen, 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 |
**Nur in Laufzeiten der Version 2.3 und früher unterstützt**. Legen Sie dieses Attribut auf true fest, um die Profilerstellung für die Managed Service for Apache Spark-Arbeitslast zu aktivieren. |
dataproc.profiling.name |
**Nur in Laufzeiten der Version 2.3 und früher unterstützt** Verwenden Sie dieses Attribut, um den Namen festzulegen, der zum Erstellen eines Profils im Profiler-Dienst verwendet wird. |
spark.jars |
Verwenden Sie dieses Attribut, um die durch Kommas getrennte Liste der JAR-Dateien festzulegen, die in die Treiber- und Executor-Klassenpfade aufgenommen werden sollen. |
spark.archives |
Verwenden Sie dieses Attribut, um die durch Kommas getrennte Liste der Archive festzulegen, die in das Arbeitsverzeichnis jedes Executors extrahiert werden sollen. .jar, .tar.gz, .tgz und .zip werden unterstützt. Fügen Sie dieses Attribut für serverlose interaktive Sitzungen hinzu, wenn Sie eine interaktive Sitzung oder ein Laufzeitprofil (Sitzungsvorlage) erstellen. |
dataproc.artifacts.remove |
Mit diesem Attribut können Sie Standardartefakte entfernen, die auf Managed Service for Apache Spark-Laufzeiten installiert sind.
Unterstützte Artefakte sind conscrypt, delta-lake, iceberg, rapids und spark-bigquery-connector. |