Spark-Attribute

Dataproc Serverless nutzt Spark-Attribute, um Die Rechen-, Arbeitsspeicher- und Laufwerkressourcen, die der Batcharbeitslast zugewiesen werden sollen. Diese Property-Einstellungen können sich auf die Inanspruchnahme und die Kosten des Arbeitslastkontingents auswirken. Weitere Informationen finden Sie unter Dataproc Serverless-Kontingente und Dataproc Serverless-Preise.

Spark-Batcharbeitslast-Properties festlegen

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

Console

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

  2. Klicken Sie im Bereich Eigenschaften auf Property hinzufügen und geben Sie Key (Name) und Value von unterstütztes Spark-Attribut

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 for Spark unterstützt die meisten Spark-Attribute, unterstützt keine YARN- und Shuffle-bezogenen Spark-Attribute, z. B. spark.master=yarn und spark.shuffle.service.enabled. Wenn im Spark-Anwendungscode eine YARN- oder Zufallsmix-Property festgelegt ist, 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 die EnvironmentVariableName hinzu. Ich 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

Der Arbeitsspeicher, der dem Spark-Treiberprozess zugewiesen werden soll, im JVM-Speicherstringformat mit einem Suffix für die Größeneinheit („m“, „g“) angegeben oder „t“).

Gesamttreiberarbeitsspeicher pro Treiberkern, einschließlich Treiberarbeitsspeicher-Overhead, Dieser muss zwischen 1024m und 7424m für den Standard-Computing-Stufe (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-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“).

Dabei handelt es sich um Nicht-Heap-Speicher, der mit JVM-Overheads verbunden ist, interne Strings und andere native Kosten. Arbeitsspeicher, der von anderen Treiberprozessen wie PySpark-Treiberprozessen verwendet wird und des Arbeitsspeichers, der von anderen nicht Treiberprozessen im Container verwendet wird. 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.

Gesamttreiberarbeitsspeicher pro Treiberkern, einschließlich Treiberarbeitsspeicher-Overhead, muss zwischen 1024m und 7424m für die Standard-Computing-Stufe (24576m für die Premium-Computing-Stufe). 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, aber wird 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-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 Laufwerksstufe, die für den lokalen Speicher und den Shuffle-Speicher auf dem Treiber verwendet werden soll. Die Premium-Laufwerkebene bietet eine bessere Leistung in Bezug auf IOPS und Durchsatz, wird aber zu einem höheren Preis abgerechnet. Wenn die Laufwerksstufe Premium für des Treibers müssen Sie auch die Premium-Computing-Stufe mit spark.dataproc.driver.compute.tier=premium, und der Speicherplatz muss mit spark.dataproc.executor.disk.size.

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.

Gesamter Executor-Arbeitsspeicher pro Executor-Kern, einschließlich Executor-Arbeitsspeicher muss zwischen 1024m und 7424m für die Standard-Computing-Stufe (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 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 Prozessen verwendet wird, die nicht zum Executor gehören und im Container ausgeführt werden. Die maximale Arbeitsspeichergröße des Containers, in dem der Executor ausgeführt wird, beträgt ermittelt durch die Summe von spark.executor.memoryOverhead plus spark.executor.memory.

Gesamter Executor-Arbeitsspeicher pro Executor-Kern, einschließlich Executor-Arbeitsspeicher muss zwischen 1024m und 7424m für die Standard-Computing-Stufe (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-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, aber wird 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 für den Executor die Laufwerksstufe Premium 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. 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 Laufwerksstufe, die für den lokalen Speicher und den Shuffle-Speicher auf Executors verwendet werden soll. Die Premium-Laufwerkebene 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 einer Batcharbeitslast beginnt, kann Autoscaling die Anzahl der aktiven Executors ändern. Muss mindestens 2 und höchstens 2000 sein.

Autoscaling-Attribute

Siehe Eigenschaften der dynamischen Zuordnung von Spark finden Sie eine Liste der Spark-Attribute, mit denen Sie Serverloses Autoscaling von Dataproc

Logging-Attribute

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 Überschreibt alle benutzerdefinierten Protokolleinstellungen mit der Auswirkung eines Aufrufs von SparkContext.setLogLevel(PackageName, level) bei Spark-Start-up. 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 bei der Planung verzerrte Executors für Shuffle-Karten aus. Dies kann die lange Wartezeiten beim Shuffle-Abruf, die durch eine Shuffle-Schreibverzerrung verursacht wurden. false true
spark.scheduler.shuffleSkew.minFinishedTasks Mindestanzahl der abgeschlossenen Shuffle-Map-Aufgaben in einem Executor um sie als Verzerrung zu behandeln. 10 100
spark.scheduler.shuffleSkew.maxExecutorsNumber Maximale Anzahl von Executors, die als Verzerrung behandelt werden sollen. Verzerrte Ausführende werden von der aktuellen Planungsrunde ausgeschlossen. 5 10
spark.scheduler.shuffleSkew.maxExecutorsRatio Maximales Verhältnis der gesamten Executors, die als Verzerrung behandelt werden sollen. Verzerrte Ausführende werden von der Planung ausgeschlossen. 0,05 0.1
spark.scheduler.shuffleSkew.ratio Ein Vielfaches der durchschnittlich abgeschlossenen Shuffle-Map-Aufgaben in einem Executor als Verzerrung behandelt. 1,5 2.0

Weitere Eigenschaften

Attribut Beschreibung
dataproc.diagnostics.enabled Aktivieren Sie dieses Attribut, um eine Diagnose für einen Batch-Arbeitslastfehler auszuführen oder Kündigung. Wenn die Diagnose aktiviert ist, wird die Batcharbeitslast weiterhin verwendet Rechenressourcen nach Abschluss der Arbeitslast, 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 diese Property für ein Upgrade auf ein Version des Cloud Storage-Connectors die sich von der Version unterscheidet, die mit der Laufzeitversion.
dataproc.sparkBqConnector.version Verwenden Sie diese Property für ein Upgrade auf ein Version des Spark BigQuery-Connectors die sich von der Version unterscheidet, die mit der Laufzeitversion (siehe Verwenden Sie den BigQuery-Connector mit Dataproc Serverless for Spark.
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.