Spark-Attribute

In diesem Dokument werden Spark-Properties und ihre Einrichtung beschrieben. In Dataproc Serverless werden anhand von Spark-Properties die Rechen-, Arbeitsspeicher- und Festplattenressourcen ermittelt, die Ihrer Batcharbeitslast zugewiesen werden. Diese Property-Einstellungen können sich auf die Inanspruchnahme des Arbeitslastkontingents und die Kosten auswirken. Weitere Informationen finden Sie unter Dataproc Serverless-Kontingente und Dataproc Serverless-Preise.

Spark-Batcharbeitslast-Properties festlegen

Sie können Spark-Eigenschaften angeben, wenn Sie über die Google Cloud Console, die gcloud CLI oder die Dataproc API eine Dataproc-Serverless Spark-Batch-Arbeitslast einreichen.

Console

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

    Zu „Dataproc Create batch“

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

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

gcloud

Beispiel für die Batch-Einreichung ü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-Properties als Teil einer batches.create-Anfrage fest.

Unterstützte Spark-Attribute

Dataproc Serverless für Spark unterstützt die meisten Spark-Properties, aber keine YARN- und Zufallsmix-bezogenen Spark-Properties wie spark.master=yarn und spark.shuffle.service.enabled. Wenn im Spark-Anwendungscode eine YARN- oder Zufallsmix-Property festgelegt ist, schlägt die Anwendung fehl.

Eigenschaften der Laufzeitumgebung

Dataproc Serverless für Spark unterstützt die folgenden benutzerdefinierten Spark-Properties zur Konfiguration der Laufzeitumgebung:

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

Eigenschaften der Ressourcenzuweisung

Dataproc Serverless für Spark unterstützt die folgenden Spark-Properties zur Konfiguration 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. Sie wird im JVM-Speicherstringformat mit einem Suffix für die Größe (m, g oder t) angegeben.

Gesamter Treiberspeicher pro Treiberkern, einschließlich Treiberspeicher-Overhead, muss für die Standard-Rechenebene zwischen 1024m und 7424m (24576m für die Premium-Rechenebene) liegen. 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. Sie wird im JVM-Speicher-Stringformat mit einem Suffix für die Größe angegeben („m“, „g“ oder „t“).

Dies ist nicht Heap-Speicher, der mit JVM-Overhead, internen Strings und anderen nativen Overheads verbunden ist. Dazu gehört auch der Arbeitsspeicher, der von anderen Treiberprozessen wie PySpark-Treiberprozessen und von anderen nicht treiberbezogenen Prozessen 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 Gesamtarbeitsspeicher pro Treiberkern, einschließlich des Treiberspeicher-Overheads, muss für die Standard-Rechenebene zwischen 1024m und 7424m (24576m für die Premium-Rechenebene) liegen. Beispiel: Wenn spark.driver.cores = 4, dann 4096m <= spark.driver.memory + spark.driver.memoryOverhead <= 29696m.

10% des Treiberspeichers, mit Ausnahme von PySpark-Batch-Arbeitslasten, für die standardmäßig 40% des Treiberspeichers verwendet werden 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 Die dem Treiber zugewiesene Größe des Speicherplatzes, angegeben mit einem Suffix für die Größe („k“, „m“, „g“ oder „t“). Muss mindestens 250GiB sein. Wenn für den Treiber die Premium-Speicherebene ausgewählt ist, sind die zulässigen Größen 375 g, 750 g, 1.500 g, 3.000 g, 6.000 g oder 9.000 g. Wenn die Premium-Laufwerkstufe und 16 Treiberkerne ausgewählt sind, beträgt die Mindestlaufwerkgröße 750 GB. 100GiB pro Kern 1024g, 2t
spark.dataproc.driver.disk.tier Die Laufwerkebene, die für lokalen und Zufallsspeicher auf dem Laufwerk verwendet werden soll. Die Premium-Laufwerkstufe bietet eine bessere Leistung in Bezug auf IOPS und Durchsatz, wird aber zu einem höheren Preis abgerechnet. Wenn die Premium-Speicherebene auf dem Treiber ausgewählt ist, muss auch die Premium-Rechenebene mit spark.dataproc.driver.compute.tier=premium ausgewählt und die Größe des Speicherplatzes mit spark.dataproc.executor.disk.size angegeben werden.

Wenn die Premium-Laufwerksebene ausgewählt ist, weist der Treiber dem Systemspeicher zusätzliche 50 GiB Speicherplatz 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. Gültige Werte: 4, 8, 16. 4
spark.executor.memory

Die Größe des Arbeitsspeichers, der jedem Spark-Executor-Prozess zugewiesen werden soll. Sie wird im JVM-Arbeitsspeicher-Stringformat mit einem Suffix für die Größe („m“, „g“ oder „t“) angegeben.

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

512m, 2g
spark.executor.memoryOverhead

Die Menge des zusätzlichen JVM-Speichers, der dem Spark-Executor-Prozess zugewiesen werden soll. Sie wird im JVM-Speicher-Stringformat mit einem Suffix für die Größe („m“, „g“ oder „t“) angegeben.

Dies ist nicht Heap-Speicher, der für JVM-Overhead, interne Strings und andere nativen Overheads verwendet wird. Dazu gehören der PySpark-Executor-Speicher und der Speicher, der von anderen nicht vom Executor stammenden Prozessen im Container verwendet wird. 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 Gesamtarbeitsspeicher pro Executor-Kern, einschließlich des Executor-Speicher-Overheads, muss für die Standard-Rechenebene zwischen 1024m und 7424m (24576m für die Premium-Rechenebene) liegen. 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, für die standardmäßig 40% des Executor-Arbeitsspeichers verwendet werden 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 Die Größe des jedem Executor zugewiesenen Speicherplatzes, angegeben mit einem Suffix für die Größe („k“, „m“, „g“ oder „t“). Der Speicherplatz des Executors kann für das Zufallsmixen von Daten und zum Staging von Abhängigkeiten verwendet werden. Muss mindestens 250GiB sein. Wenn auf dem Executor die Premium-Speicherebene 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 Premium-Laufwerkebene und 16 Executor-Kerne ausgewählt sind, beträgt die Mindestlaufwerkgröße 750 GB. 100GiB pro Kern 1024g, 2t
spark.dataproc.executor.disk.tier Die Laufwerksebene, die für lokalen und Zufallsspeicher auf Executors verwendet werden soll. Die Premium-Laufwerkstufe bietet eine bessere Leistung in Bezug auf IOPS und Durchsatz, wird aber zu einem höheren Preis abgerechnet. Wenn die Premium-Speicherebene auf dem Executor ausgewählt ist, muss auch die Premium-Rechenebene mit spark.dataproc.executor.compute.tier=premium ausgewählt und die Größe des Speicherplatzes mit spark.dataproc.executor.disk.size angegeben werden.

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

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

Autoscaling-Attribute

Eine Liste der Spark-Properties, mit denen Sie das Dataproc Serverless-Autoscaling konfigurieren können, finden Sie unter Spark-Properties für die dynamische Zuordnung.

Protokollierungseigenschaften

Attribut Beschreibung Standard Beispiele
spark.log.level Wenn diese Option festgelegt ist, werden alle benutzerdefinierten Protokolleinstellungen überschrieben. Beim Starten von Spark wird dann SparkContext.setLogLevel() aufgerufen. Gültige Lobenen sind: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE und WARN. INFO, DEBUG
spark.executor.syncLogLevel.enabled Wenn dieser Wert auf true festgelegt ist, wird die über die Methode SparkContext.setLogLevel() angewendete Protokollebene an alle Ausführer weitergegeben. false true, false
spark.log.level.PackageName Wenn diese Option festgelegt ist, werden alle benutzerdefinierten Protokolleinstellungen überschrieben. Beim Starten von Spark wird SparkContext.setLogLevel(PackageName, level) aufgerufen. Gültige Lobenebenen 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 Executors mit einer verzerrten Zuordnung aus. Dadurch können lange Wartezeiten beim Zufallsmix-Abruf aufgrund von Verzerrungen beim Zufallsmix-Schreiben reduziert werden. false true
spark.scheduler.shuffleSkew.minFinishedTasks Mindestanzahl der abgeschlossenen Zuordnungsaufgaben mit Zufallsmix auf einem Executor, die als Abweichung behandelt werden sollen. 10 100
spark.scheduler.shuffleSkew.maxExecutorsNumber Maximale Anzahl von Executors, die als Abweichung behandelt werden sollen. Verzerrte Ausführende werden von der aktuellen Planungsrunde ausgeschlossen. 5 10
spark.scheduler.shuffleSkew.maxExecutorsRatio Maximales Verhältnis der Gesamtzahl der Executors, das als Abweichung behandelt werden soll. Verzerrte Ausführende werden von der Planung ausgeschlossen. 0,05 0.1
spark.scheduler.shuffleSkew.ratio Ein Vielfaches der durchschnittlichen Anzahl der abgeschlossenen Zufallsmix-Aufgaben auf einem Executor, das als Abweichung behandelt werden soll. 1,5 2.0

Weitere Eigenschaften

Attribut Beschreibung
dataproc.diagnostics.enabled Aktivieren Sie diese Eigenschaft, um bei einem Fehler oder einer Stornierung einer Batch-Arbeitslast eine Diagnose auszuführen. Wenn die Diagnose aktiviert ist, werden für Ihre Batcharbeitslast auch nach Abschluss der Arbeitslast weiterhin Rechenressourcen verwendet, 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 Mit dieser Eigenschaft können Sie ein Upgrade auf eine Cloud Storage-Connector-Version durchführen, die sich von der Version unterscheidet, die mit der Laufzeitversion Ihrer Batch-Arbeitslast installiert wurde.
dataproc.sparkBqConnector.version Mit dieser Eigenschaft können Sie auf eine Spark BigQuery-Connector-Version umstellen, die sich von der Version unterscheidet, die mit der Laufzeitversion Ihrer Batch-Arbeitslast installiert wurde (siehe BigQuery-Connector mit Dataproc Serverless for Spark verwenden).
dataproc.profiling.enabled Legen Sie dieses Attribut auf true fest, um das Profiling für die serverlose Dataproc-Arbeitslast zu aktivieren.
dataproc.profiling.name Mit dieser Property legen Sie den Namen fest, der zum Erstellen eines Profils im Profiler-Dienst verwendet wurde.