Spark-Attribute

Dataproc Serverless verwendet Spark-Attribute, um die Rechen-, Arbeitsspeicher- und Laufwerkressourcen zu bestimmen, die der Batcharbeitslast zugewiesen werden sollen. Diese Attributeinstellungen können sich auf den Verbrauch und die Kosten von Arbeitslastkontingenten auswirken. Weitere Informationen finden Sie unter Dataproc Serverless-Kontingente und Dataproc Serverless-Preise.

Attribute von Spark-Batcharbeitslasten festlegen

Sie können Spark-Attribute festlegen, wenn Sie über die Google Cloud Console, die gcloud CLI oder die Dataproc API eine Batcharbeitslast von Dataproc Serverless Spark senden.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Dataproc-Batch erstellen auf.

  2. Klicken Sie im Bereich Attribute auf Add Property (Attribut hinzufügen) und geben Sie dann Key (Name) und Value eines unterstützten Spark-Attributs ein.

gcloud

Beispiel für die Batchübermittlung an 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

Dataproc Serverless for Spark unterstützt die meisten Spark-Attribute, aber keine YARN- oder Shuffle-bezogenen Spark-Attribute wie spark.master=yarn und spark.shuffle.service.enabled. Wenn der Spark-Anwendungscode ein YARN- oder Shuffle-Attribut festlegt, schlägt die Anwendung fehl.

Attribute der Laufzeitumgebung

Dataproc Serverless for Spark unterstützt die folgenden benutzerdefinierten Spark-Attribute zum Konfigurieren der Laufzeitumgebung:

Attribut Beschreibung
spark.dataproc.driverEnv.EnvironmentVariableName Fügen Sie dem Treiberprozess EnvironmentVariableName hinzu. Sie können mehrere Umgebungsvariablen angeben.

Attribute für Ressourcenzuweisung

Dataproc Serverless for 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 Größe des Arbeitsspeichers, der dem Spark-Treiberprozess zugewiesen werden soll, angegeben im JVM-Speicherstringformat mit einem Suffix der Größeneinheit („m“, „g“ oder „t“).

Gesamttreiberarbeitsspeicher pro Treiberkern, einschließlich Treiberarbeitsspeicher-Overhead, der zwischen 1024m und 7424m für die Standard-Computing-Stufe liegen muss (24576m für die Premium-Computing-Stufe). 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-Arbeitsspeicher, der dem Spark-Treiberprozess zugewiesen werden soll, angegeben im JVM-Speicherstringformat mit einem Suffix der Größeneinheit ("m", "g" oder "t").

Dies ist Nicht-Heap-Arbeitsspeicher, der mit JVM-Overheads, internen Strings und anderen nativen Overheads verbunden ist, einschließlich des Arbeitsspeichers, der von anderen Treiberprozessen wie PySpark-Treiberprozessen und von anderen im Container ausgeführten Nicht-Treiberprozessen verwendet wird. Die maximale Arbeitsspeichergröße des Containers, in dem der Treiber ausgeführt wird, ergibt sich aus der Summe von spark.driver.memoryOverhead plus spark.driver.memory.

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

10% des Treiberarbeitsspeichers, mit Ausnahme von PySpark-Batcharbeitslasten, die standardmäßig 40% des Treiberarbeitsspeichers ausmachen 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 jedoch zu einem höheren Preis abgerechnet. standard Standard, Premium
spark.dataproc.driver.disk.size Der dem Treiber zugewiesene Speicherplatz, angegeben mit einem Suffix der Größeneinheit („k“, „m“, „g“ oder „t“). Muss mindestens 250GiB sein. Wenn die Premium-Laufwerksstufe für den Treiber ausgewählt wurde, sind die gültigen Größen 375 g, 750 g, 1.500 g, 3.000 g, 6.000 g oder 9000 g. 100GiB pro Kern 1024g, 2t
spark.dataproc.driver.disk.tier Die Laufwerksstufe, die für den lokalen Speicher und den Shuffle-Speicher auf dem Treiber verwendet werden soll. Die Laufwerksstufe Premium bietet eine bessere Leistung bei IOPS und Durchsatz, wird jedoch 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 werden. Die Größe des Speicherplatzes muss mit spark.dataproc.executor.disk.size angegeben werden.

Wenn die Premium-Laufwerksstufe ausgewählt ist, weist der Treiber zusätzlichen Speicherplatz von 50 GiB 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 Speichermenge, die jedem Spark-Executor-Prozess zugewiesen werden soll, angegeben im JVM-Speicherstringformat mit einem Suffix der Größeneinheit („m“, „g“ oder „t“).

Der gesamte Executor-Arbeitsspeicher pro Executor-Kern, einschließlich Executor-Arbeitsspeicher-Overhead, muss für die Standard-Computing-Stufe zwischen 1024m und 7424m liegen (24576m für die Premium-Computing-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-Arbeitsspeicher, der dem Spark-Executor-Prozess zugewiesen werden soll, angegeben im JVM-Speicherstringformat mit einem Suffix der Größeneinheit ("m", "g" oder "t").

Dies ist Nicht-Heap-Speicher, der für JVM-Overheads, interne Strings und andere native Overheads verwendet wird. Er umfasst PySpark-Executor-Arbeitsspeicher und Arbeitsspeicher, der von anderen Nicht-Executor-Prozessen im Container verwendet wird. Die maximale Arbeitsspeichergröße des Containers, in dem der Executor ausgeführt wird, ergibt sich aus der Summe von spark.executor.memoryOverhead plus spark.executor.memory.

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

10% des Executor-Arbeitsspeichers, mit Ausnahme von PySpark-Batcharbeitslasten, die standardmäßig 40% des Executor-Arbeitsspeichers sind 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 jedoch zu einem höheren Preis abgerechnet. standard Standard, Premium
spark.dataproc.executor.disk.size Die Menge an Speicherplatz, der jedem Executor zugewiesen ist, angegeben durch ein Suffix der Größeneinheit ("k", "m", "g" oder "t"). Speicherplatz des Executors kann für Shuffle-Daten und zum Staging von Abhängigkeiten verwendet werden. Muss mindestens 250GiB sein. Wenn für den Executor die Premium-Laufwerksstufe ausgewählt ist, sind folgende Größen zulässig: 375 g, 750 g, 1.500 g, 3.000 g, 6.000 g oder 9.000 g. 100GiB pro Kern 1024g, 2t
spark.dataproc.executor.disk.tier Die Laufwerksstufe, die für den lokalen Speicher und den Shuffle-Speicher auf Executors verwendet werden soll. Die Laufwerksstufe Premium bietet eine bessere Leistung bei IOPS und Durchsatz, wird jedoch zu einem höheren Preis abgerechnet. Wenn für den Executor die Premium-Laufwerksstufe ausgewählt wird, muss auch die Premium-Computing-Stufe mit spark.dataproc.executor.compute.tier=premium ausgewählt werden. Die Größe des Speicherplatzes muss mit spark.dataproc.executor.disk.size angegeben werden.

Wenn die Premium-Laufwerksstufe ausgewählt ist, wird jedem Executor ein zusätzlicher Speicherplatz von 50 GiB für Systemspeicher zugewiesen, der von Nutzeranwendungen nicht verwendet werden kann.

standard Standard, Premium
spark.executor.instances Die anfängliche Anzahl der Executors, die zugewiesen werden sollen. Nach dem Start einer Batcharbeitslast kann das Autoscaling die Anzahl der aktiven Executors ändern. Muss mindestens 2 und darf höchstens 2000 sein.

Autoscaling-Attribute

Unter Attribute für die dynamische Zuordnung von Spark finden Sie eine Liste der Spark-Attribute, die Sie zum Konfigurieren des serverlosen Autoscalings von Dataproc verwenden können.

Logging-Attribute

Attribut Beschreibung Standard Beispiele
spark.log.level Überschreibt alle benutzerdefinierten Logeinstellungen mit der 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 true festgelegt ist, wird die über die Methode SparkContext.setLogLevel() angewendete Logebene an alle Executors weitergegeben. false true, false
spark.log.level.PackageName Überschreibt alle benutzerdefinierten Logeinstellungen mit der Auswirkung eines Aufrufs von SparkContext.setLogLevel(PackageName, level) beim Spark-Start. Gültige Logebenen sind: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE und WARN. spark.log.level.org.apache.spark=error

Weitere Eigenschaften

Attribut Beschreibung
dataproc.diagnostics.enabled Aktivieren Sie dieses Attribut, um bei einem Batchfehler oder einem Abbruch einer Batcharbeitslast eine Diagnose auszuführen. Wenn die Diagnose aktiviert ist, verwendet die Batcharbeitslast nach Abschluss der Arbeitslast weiterhin Rechenressourcen, bis die Diagnose abgeschlossen ist. Ein URI, der auf den Speicherort des Diagnose-Tarballs verweist, ist im API-Feld Batch.RuntimeInfo.diagnosticOutputUri – aufgeführt.
dataproc.gcsConnector.version Verwenden Sie dieses Attribut, um ein Upgrade auf eine Version des Cloud Storage-Connectors durchzuführen, die sich von der Version unterscheidet, die mit der Laufzeitversion Ihrer Batcharbeitslast installiert ist.
dataproc.sparkBqConnector.version Verwenden Sie dieses Attribut, um ein Upgrade auf eine Version des Spark BigQuery-Connectors durchzuführen, die sich von der Version unterscheidet, die mit der Laufzeitversion Ihrer Batcharbeitslast installiert wurde (siehe BigQuery-Connector mit Dataproc Serverless für Spark verwenden).
dataproc.profiling.enabled Legen Sie dieses Attribut auf true fest, um die Profilerstellung für die serverlose Dataproc-Arbeitslast zu aktivieren.
dataproc.profiling.name Verwenden Sie dieses Attribut, um den Namen festzulegen, der zum Erstellen eines Profils im Profiler-Dienst verwendet wird.