Spark-Attribute

In diesem Dokument werden Spark-Attribute und ihre Festlegung beschrieben. In Serverless for Apache Spark werden Spark-Attribute verwendet, um die Compute-, Arbeitsspeicher- und Festplattenressourcen 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 Serverless for Apache Spark und Preise für Serverless for Apache Spark.

Attribute für Spark-Batcharbeitslasten festlegen

Sie können Spark-Attribute angeben, wenn Sie eine Serverless 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 Dataproc-Batch erstellen auf.

    Zu „Dataproc-Batch erstellen“

  2. Klicken Sie im Bereich Attribute auf Attribut hinzufügen.

  3. Geben Sie den Key (Namen) und den Value eines unterstützten Spark-Attributs ein.

gcloud

Beispiel für die Batchübermittlung über die gcloud CLI:

gcloud dataproc batches submit spark
    --properties=spark.checkpoint.compress=true \
    --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

Serverless for Apache Spark unterstützt die meisten Spark-Attribute, aber es unterstützt 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

Serverless 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 Google Cloud Serverless for Apache Spark-Stufen). Interaktive Sitzungen werden immer auf der Premium-Stufe dataproc.tier ausgeführt.
  • Wenn Sie dieses Attribut für die Batchstufe auf standard festlegen, werden die Attribute für die Dataproc-Laufzeit und die Ressourcenstufe auf die Stufe standard festgelegt (siehe Attribute für die Ressourcenzuweisung).
  • Wenn Sie dieses Attribut für die Batchstufe auf premium festlegen, wird spark.dataproc.engine auf lightningEngine und spark.dataproc.driver.compute.tier und spark.dataproc.executor.compute.tier auf premium festgelegt. Sie können die meisten automatisch festgelegten Einstellungen für die Batchstufe überschreiben. Die automatisch festgelegten Einstellungen für die Compute-Stufe können jedoch für Batches mit Laufzeiten vor 3.0 nicht überschrieben werden (siehe Attribute für die Ressourcenzuweisung).
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.
  • Batches (Standardstufe): default
  • Batches (Premiumstufe): lightningEngine
  • Sitzungen: default
spark.dataproc.lightningEngine.runtime Die Laufzeit, die verwendet werden soll, wenn Lightning Engine für eine Batcharbeitslast oder eine interaktive Sitzung ausgewählt ist: default oder native (Native Query Execution). default

Attribute für die Ressourcenzuweisung

Serverless 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, muss für die Compute-Stufe „Standard“ zwischen 1024m und 7424m (24576m für die Compute-Stufe „Premium“) liegen. Wenn beispielsweise spark.driver.cores = 4 ist, muss 4096m <= spark.driver.memory + spark.driver.memoryOverhead <= 29696m gelten.

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, internen Strings und anderen nativen Overheads verknüpft 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 spark.driver.memoryOverhead und spark.driver.memory bestimmt.

Der gesamte Treiberspeicher pro Treiberkern, einschließlich des Treiberspeicher-Overheads, muss für die Compute-Stufe „Standard“ zwischen 1024m und 7424m liegen (24576m für die Compute-Stufe „Premium“). Wenn beispielsweise, wenn spark.driver.cores = 4 ist, dann 4096m <= spark.driver.memory + spark.driver.memoryOverhead <= 29696m.

10% des Treiberspeichers, außer bei PySpark-Batcharbeitslasten, die standardmäßig 40% des Treiberspeichers verwenden 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 Festplattenspeicher, die dem Treiber zugewiesen wird, angegeben mit einem Suffix für die Größeneinheit („k“, „m“, „g“ oder „t“). Muss mindestens 250GiB sein. Wenn die Festplattenstufe „Premium“ für den Treiber ausgewählt ist, sind die gültigen Größen 375 g, 750 g, 1.500 g, 3.000 g, 6.000 g oder 9.000 g. Wenn die Festplattenstufe „Premium“ und 16 Treiberkerne ausgewählt sind, beträgt die Mindestfestplattengröße 750 g. 100GiB pro Kern 1024g, 2t
spark.dataproc.driver.disk.tier Die Festplattenstufe, die für den lokalen Speicher und den Shuffle-Speicher auf dem Treiber verwendet werden soll. Die Festplattenstufe „Premium“ bietet eine bessere Leistung in Bezug auf IOPS und Durchsatz, wird aber zu einem höheren Preis abgerechnet. Wenn die Festplattenstufe „Premium“ für den Treiber ausgewählt ist, muss auch die Compute-Stufe „Premium“ mit spark.dataproc.driver.compute.tier=premium ausgewählt werden und die Menge an Festplattenspeicher muss mit spark.dataproc.executor.disk.size angegeben werden.

Wenn die Festplattenstufe „Premium“ ausgewählt ist, weist der Treiber zusätzlich 50 GiB Festplattenspeicher 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 Executorkern, einschließlich des Executorspeicher Overheads, muss für die Compute-Stufe „Standard“ zwischen 1024m und 7424m liegen (24576m für die Compute-Stufe „Premium“). Wenn beispielsweise wenn spark.executor.cores = 4 ist, dann 4096m <= spark.executor.memory + spark.executor.memoryOverhead <= 29696m gilt.

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

Der gesamte Executorspeicher pro Executorkern, einschließlich des Executorspeicher Overheads, muss für die Compute-Stufe „Standard“ zwischen 1024m und 7424m liegen (24576m für die Compute-Stufe „Premium“). Wenn beispielsweise wenn spark.executor.cores = 4, dann 4096m <= spark.executor.memory + spark.executor.memoryOverhead <= 29696m.

10% des Executorspeichers, außer bei 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 Festplattenspeicher, die jedem Executor zugewiesen wird, angegeben mit einem Suffix für die Größeneinheit („k“, „m“, „g“ oder „t“). Der Festplattenspeicher des Executors kann für Shuffle-Daten und zum Bereitstellen Abhängigkeiten verwendet werden. Muss mindestens 250GiB sein. Wenn die Festplattenstufe „Premium“ für den Executor ausgewählt ist, sind die gültigen Größen 375 g, 750 g, 1.500 g, 3.000 g, 6.000 g oder 9.000 g. Wenn die Festplattenstufe „Premium“ und 16 Executorkerne ausgewählt sind, beträgt die Mindestfestplattengröße 750 g. 100GiB pro Kern 1024g, 2t
spark.dataproc.executor.disk.tier Die Festplattenstufe, die für den lokalen Speicher und den Shuffle-Speicher auf den Executors verwendet werden soll. Die Festplattenstufe „Premium“ bietet eine bessere Leistung in Bezug auf IOPS und Durchsatz, wird aber zu einem höheren Preis abgerechnet. Wenn die Festplattenstufe „Premium“ für den Executor ausgewählt ist, muss auch die Compute-Stufe „Premium“ mit spark.dataproc.executor.compute.tier=premium ausgewählt werden und die Menge an Festplattenspeicher muss mit spark.dataproc.executor.disk.size angegeben werden.

Wenn die Festplattenstufe „Premium“ ausgewählt ist, werden jedem Executor zusätzlich 50 GiB Festplattenspeicher 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 Serverless for Apache Spark konfigurieren können, finden Sie unter Spark-Attribute für die dynamische Zuweisung.

Logging-Attribute

Attribut Beschreibung Standard Beispiele
spark.log.level Wenn festgelegt, werden alle benutzerdefinierten Protokolleinstellungen mit der Wirkung von einem Aufruf von SparkContext.setLogLevel() beim Start von Spark überschrieben. Gültige Protokollebenen sind: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, und WARN. INFO, DEBUG
spark.executor.syncLogLevel.enabled Wenn auf true festgelegt, 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 mit der Wirkung eines Aufrufs von SparkContext.setLogLevel(PackageName, level) beim Start von Spark überschrieben. 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 Attribute

Attribut Beschreibung
dataproc.diagnostics.enabled 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 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 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 Serverless for Apache Spark verwenden).
dataproc.profiling.enabled Legen Sie dieses Attribut auf true fest, um das Profiling für die Serverless for Apache Spark-Arbeitslast zu aktivieren.
dataproc.profiling.name Mit diesem Attribut können Sie den Namen festlegen, der zum Erstellen eines Profils für den 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 Serverless for Apache Spark-Laufzeiten installiert sind. Unterstützte Artefakte sind spark-bigquery-connector, iceberg, und delta-lake.