Spark-Attribute

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

Eigenschaften der Spark-Batcharbeitslast festlegen

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

Console

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

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

gcloud

Beispiel für 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

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

Der gesamte Treiberarbeitsspeicher pro Treiberkern, einschließlich des Aufwands des Treiberarbeitsspeichers, der zwischen 1024m und 7424m für die Standard-Computing-Stufe liegen muss (24576m für die Premium-Computing-Stufe). Bei spark.driver.cores = 4 ist beispielsweise 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 ein Nicht-Heap-Arbeitsspeicher, der mit JVM-Overheads, internen Strings und anderen nativen Overheads verknüpft ist. Dazu gehört auch der Arbeitsspeicher, der von anderen Treiberprozessen wie PySpark-Treiberprozessen verwendet wird, sowie Arbeitsspeicher, der von anderen nicht Treiberprozessen im Container 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 Treiberarbeitsspeichers, muss zwischen 1024m und 7424m für die Standard-Computing-Stufe liegen (24576m für die Premium-Computing-Stufe). Wenn beispielsweise 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 betragen 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 in Form eines Suffixes der Größeneinheit („k“, „m“, „g“ oder „t“). Muss mindestens 250GiB sein. Wenn für den Treiber die Premium-Laufwerksstufe ausgewählt wird, sind 375 g, 750 g, 1500 g, 3000 g, 6000 g oder 9000 g zulässig. 100GiB pro Kern 1024g, 2t
spark.dataproc.driver.disk.tier Die Laufwerksstufe, die für den lokalen und Shuffle-Speicher auf dem Treiber verwendet werden soll. Die Premium-Laufwerksstufe bietet eine bessere Leistung bei IOPS und Durchsatz, wird jedoch zu einem höheren Preis abgerechnet. Wenn die Premium-Laufwerksstufe auf dem Treiber ausgewählt wird, 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 wird, weist der Treiber zusätzliche 50 GiB Speicherplatz 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 des Executor-Arbeitsspeichers, muss zwischen 1024m und 7424m für die Standard-Computing-Stufe liegen (24576m für die Premium-Computing-Stufe). Wenn beispielsweise 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. Er wird im JVM-Speicherstringformat mit einem Suffix der Größeneinheit („m“, „g“ oder „t“) angegeben.

Dies ist ein Nicht-Heap-Arbeitsspeicher, der für JVM-Overheads, interne Strings und andere native Overheads verwendet wird. Er umfasst den PySpark-Executor-Arbeitsspeicher und Arbeitsspeicher, 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-Arbeitsspeichers, muss zwischen 1024m und 7424m für die Standard-Computing-Stufe liegen (24576m für die Premium-Computing-Stufe). Wenn beispielsweise 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 betragen 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 Der jedem Executor zugewiesenen Speicherplatz mit einem Suffix für die Größeneinheit („k“, „m“, „g“ oder „t“). Speicherplatz des Executors kann für Shuffle-Daten und für das Staging von Abhängigkeiten verwendet werden. Muss mindestens 250GiB sein. Wenn die Premium-Laufwerksstufe auf dem Executor ausgewählt wird, sind die Größen 375g, 750g, 1500g, 3000g, 6000g oder 9000g gültig. 100GiB pro Kern 1024g, 2t
spark.dataproc.executor.disk.tier Die Laufwerksstufe, die für den lokalen und Shuffle-Speicher auf Executors verwendet werden soll. Die Premium-Laufwerksstufe bietet eine bessere Leistung bei IOPS und Durchsatz, wird jedoch zu einem höheren Preis abgerechnet. Wenn die Premium-Laufwerksstufe auf dem Executor 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 wird, werden 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 von Executors, die zugewiesen werden sollen. Nachdem eine Batcharbeitslast gestartet wurde, kann sich die Anzahl der aktiven Executors ändern. Muss mindestens 2 und darf höchstens 2000 sein.

Autoscaling-Attribute

Eine Liste der Spark-Attribute, die Sie zum Konfigurieren des serverlosen Autoscalings von Dataproc verwenden können, finden Sie unter Attribute der dynamischen Zuordnung von Spark.

Weitere Eigenschaften

Attribut Beschreibung
dataproc.diagnostics.enabled Aktivieren Sie dieses Attribut, um eine Diagnose bei einem Batch-Arbeitslastfehler oder einem Abbruch auszuführen. Wenn die Diagnose aktiviert ist, verwendet die Batcharbeitslast nach Abschluss der Arbeitslast weiterhin Rechenressourcen, bis die Diagnose abgeschlossen ist. Im API-Feld Batch.RuntimeInfo.diagnosticOutputUri ist ein URI, der auf den Speicherort des Diagnose-Tarballs verweist, 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 Spark-BigQuery-Connector-Version durchzuführen, die sich von der Version unterscheidet, die mit der Laufzeitversion Ihrer Batcharbeitslast installiert wurde (siehe BigQuery-Connector mit Dataproc Serverless for Spark verwenden).