Spark-Attribute

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

  1. Rufen Sie in der Google Cloud Console die Seite Managed Service for Apache Spark – Batch erstellen auf.

    Managed Service for Apache Spark – Batch erstellen

  2. Klicken Sie im Bereich Properties auf Property hinzufügen.

  3. Geben Sie den Key (Namen) und den Value eines 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.
  • Wenn Sie dieses Batch-Stufenattribut auf standard festlegen, werden die Laufzeit- und Ressourcenstufenattribute von Managed Service for Apache Spark auf die Stufe standard festgelegt (siehe Attribute für die Ressourcenzuweisung).
  • Wenn Sie dieses Batch-Stufenattribut auf premium setzen, wird spark.dataproc.engine auf lightningEngine und spark.dataproc.driver.compute.tier und spark.dataproc.executor.compute.tier auf premium gesetzt. Sie können die meisten automatisch festgelegten Batch-Stufeneinstellungen überschreiben. Die automatisch festgelegten Compute-Stufeneinstellungen können jedoch nicht für Batches überschrieben werden, die Laufzeiten vor 3.0 verwenden (siehe Eigenschaften für die Ressourcenzuweisung).
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.
  • Batch-Arbeitslasten: Wenn Sie das Standard-dataproc.tier-Attribut für Ihre Arbeitslast auswählen, wird dieses Attribut automatisch auf default gesetzt und kann nicht überschrieben werden. Wenn Sie die premium dataproc.tier für Ihre Arbeitslast auswählen, wird dieses Attribut automatisch auf lightningEngine gesetzt. Sie können die Einstellung jedoch bei Bedarf in default ändern.
  • Interaktive Sitzungen: Diese Einstellung wird automatisch auf default gesetzt, Sie können sie aber in lightningEngine ändern. Interaktive Sitzungen werden immer in der premium-Stufe ausgeführt. Wenn Sie in der Google Cloud Console auf der Seite Laufzeitprofil erstellen ein Laufzeitprofil (Sitzungsvorlage) erstellen, sind die Stufe Premium und Lightning Engine zur Leistungssteigerung aktivieren (wodurch spark.dataproc.engine=lightningEngine festgelegt wird) standardmäßig ausgewählt.
  • Batches (Standardstufe): default
  • Batches (Premium-Stufe): lightningEngine
  • Sitzungen: default
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 1024m und 7424m liegen muss (24576m für die Premium-Rechenstufe). Beispiel: Wenn spark.driver.cores = 4, dann 4096m <= spark.driver.memory + spark.driver.memoryOverhead <= 29696m.

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 spark.driver.memoryOverhead plus spark.driver.memory bestimmt.

Der Gesamttreiberarbeitsspeicher pro Treiberkern, einschließlich des Treiberarbeitsspeicher-Overheads, muss für die Standard-Rechenstufe zwischen 1024m und 7424m liegen (24576m für die Premium-Rechenstufe). Beispiel: Wenn spark.driver.cores = 4, dann 4096m <= spark.driver.memory + spark.driver.memoryOverhead <= 29696m.

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 1024m und 7424m liegen (24576m für die Premium-Compute-Stufe). Beispiel: Wenn spark.executor.cores = 4, dann 4096m <= spark.executor.memory + spark.executor.memoryOverhead <= 29696m.

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 spark.executor.memoryOverhead plus spark.executor.memory bestimmt.

Der gesamte Executor-Arbeitsspeicher pro Executor-Kern, einschließlich des Executor-Arbeitsspeicher-Overheads, muss für die Standard-Compute-Stufe zwischen 1024m und 7424m liegen (24576m für die Premium-Compute-Stufe). Beispiel: Wenn spark.executor.cores = 4, dann 4096m <= spark.executor.memory + spark.executor.memoryOverhead <= 29696m.

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.