Spark-Attribute

In diesem Dokument werden Spark-Attribute und deren Festlegung beschrieben. Serverless for Apache Spark verwendet Spark-Properties, um die Rechen-, Arbeitsspeicher- und Festplattenressourcen zu bestimmen, die Ihrer Batcharbeitslast zugewiesen werden sollen. Diese Property-Einstellungen 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-Batcharbeitslast festlegen

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

Console

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

    Zu „Dataproc-Batch erstellen“

  2. Klicken Sie im Bereich 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-Übermittlung mit der 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 keine YARN-bezogenen und Shuffle-bezogenen Spark-Attribute wie spark.master=yarn und spark.shuffle.service.enabled. Wenn im Spark-Anwendungscode eine YARN- oder Shuffle-Property festgelegt wird, schlägt die Anwendung fehl.

Eigenschaften der Laufzeitumgebung

Serverless for Apache Spark unterstützt die folgenden benutzerdefinierten Spark-Properties zum Konfigurieren der Laufzeitumgebung:

Attribut Beschreibung
spark.dataproc.driverEnv.ENVIRONMENT_VARIABLE_NAME Fügen Sie dem Treiberprozess ENVIRONMENT_VARIABLE_NAME hinzu. Sie können mehrere Umgebungsvariablen angeben.
spark.executorEnv.ENVIRONMENT_VARIABLE_NAME Fügen Sie dem Executor-Prozess ENVIRONMENT_VARIABLE_NAME hinzu. Sie können mehrere Umgebungsvariablen angeben.

Stufeneigenschaft

Attribut Beschreibung Standard
dataproc.tier Die Ebene, auf der eine Batcharbeitslast ausgeführt wird, entweder standard oder premium (siehe Google Cloud Serverless for Apache Spark-Ebenen). Interaktive Sitzungen werden immer auf der Premium-Ebene dataproc.tier ausgeführt.
  • Wenn Sie diese Batch-Stufeneigenschaft auf standard festlegen, werden die Eigenschaften für die Dataproc-Laufzeit- und Ressourcenstufe auf die Stufe standard festgelegt (siehe Eigenschaften für die Ressourcenbereitstellung).
  • Wenn Sie diese Batch-Tier-Property auf premium setzen, wird spark.dataproc.engine auf lightningEngine und spark.dataproc.driver.compute.tier und spark.dataproc.executor.compute.tier auf premium gesetzt. Sie können die meisten automatisch festgelegten Einstellungen für Batch-Stufen überschreiben. Die automatisch festgelegten Einstellungen für die Compute-Stufe können jedoch nicht für Batches mit Runtimes vor 3.0 ü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 des Batch-Arbeitslast oder der interaktiven Sitzung verwendet werden soll: entweder lightningEngine (siehe Lightning Engine) oder die default-Engine.
  • Batcharbeitslasten:Wenn Sie die Standard-dataproc.tier-Property für Ihre Arbeitslast auswählen, wird diese Property automatisch auf default festgelegt und kann nicht überschrieben werden. Wenn Sie für Ihre Arbeitslast premium dataproc.tier auswählen, wird diese Eigenschaft automatisch auf lightningEngine festgelegt. Sie können die Einstellung bei Bedarf jedoch in default ändern.
  • Interaktive Sitzungen:Diese Einstellung ist automatisch auf default festgelegt, kann aber in lightningEngine geändert werden. Interaktive Sitzungen werden immer auf der premium-Stufe ausgeführt.
  • Batches (Standardstufe): default
  • Batches (Premium-Stufe): lightningEngine
  • Sitzungen: default
spark.dataproc.lightningEngine.runtime Die Laufzeit, die verwendet werden soll, wenn Lightning Engine für eine Batch-Arbeitslast oder eine interaktive Sitzung ausgewählt ist: default oder native (Native Query Execution). default

Eigenschaften der Ressourcenzuweisung

Serverless for Apache Spark unterstützt die folgenden Spark-Properties 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 Größenheitensuffix („m“, „g“ oder „t“).

Der Gesamtspeicher des Treibers pro Treiberkern, einschließlich des Speicher-Overheads des Treibers, muss für die Standard-Compute-Stufe zwischen 1024m und 7424m liegen (24576m für die Premium-Compute-Stufe). 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, die dem Spark-Treiberprozess zugewiesen werden soll, angegeben im JVM-Arbeitsspeicher-Stringformat mit einem Größenheitensuffix („m“, „g“ oder „t“).

Dies ist der Nicht-Heap-Arbeitsspeicher, der mit JVM-Overheads, internen Strings und anderen nativen Overheads verknüpft ist. Er umfasst den Arbeitsspeicher, der von anderen Treiberprozessen wie PySpark-Treiberprozessen verwendet wird, sowie den Arbeitsspeicher, der von anderen Nicht-Treiberprozessen verwendet wird, die im Container ausgeführt werden. Die maximale Speichergröße des Containers, in dem der Treiber ausgeführt wird, wird durch die Summe von spark.driver.memoryOverhead und spark.driver.memory bestimmt.

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

10% des Treiberspeichers, mit Ausnahme von PySpark-Batcharbeitslasten, 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-Compute-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 Laufwerk zugewiesene Menge an Speicherplatz, angegeben mit einem Größeneinheitssuffix („k“, „m“, „g“ oder „t“). Muss mindestens 250GiB sein. Wenn die Premium-Festplattenstufe für den Treiber ausgewählt ist, sind die gültigen Größen 375 GB, 750 GB, 1.500 GB, 3.000 GB, 6.000 GB oder 9.000 GB. Wenn die Premium-Laufwerkstufe und 16 Treiberkerne ausgewählt sind, beträgt die Mindestlaufwerksgröße 750 GB. 100GiB pro Kern 1024g, 2t
spark.dataproc.driver.disk.tier Die Festplattenstufe, die für den lokalen und den Shuffle-Speicher auf dem Treiber verwendet werden soll. Die Premium-Speicherklasse bietet eine bessere Leistung in Bezug auf IOPS und Durchsatz, wird jedoch zu einem höheren Preis abgerechnet. Wenn die Premium-Festplattenstufe für den Treiber ausgewählt ist, muss auch die Premium-Computing-Stufe 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 Premium-Festplattenstufe ausgewählt ist, weist der Treiber zusätzlich 50 GiB Festplattenspeicher für den Systemspeicher 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 Menge an Arbeitsspeicher, die jedem Spark-Executor-Prozess zugewiesen werden soll, angegeben im JVM-Arbeitsspeicherstringformat mit einem Größeneinheitssuffix („m“, „g“ oder „t“).

Der gesamte Arbeitsspeicher des Executors pro Executor-Kern, einschließlich des Executor-Arbeitsspeicher-Overheads, muss für die Standard-Compute-Stufe zwischen 1024m und 7424m liegen (24576m für die Premium-Compute-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-Speicher, die dem Spark-Executor-Prozess zugewiesen werden soll, angegeben im JVM-Speicherstringformat mit einem Größenheitensuffix („m“, „g“ oder „t“).

Dies ist der Nicht-Heap-Arbeitsspeicher, der für JVM-Overheads, interne Strings und andere native Overheads verwendet wird. Er umfasst den PySpark-Executor-Arbeitsspeicher und den 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 und spark.executor.memory bestimmt.

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

Wenn die Premium-Festplattenstufe ausgewählt ist, werden jedem Executor zusätzlich 50 GiB Festplattenspeicher für den Systemspeicher zugewiesen, der nicht von Nutzeranwendungen 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 die automatische Skalierung von Serverless for Apache Spark konfigurieren können, finden Sie unter Spark-Attribute für die dynamische Zuordnung.

Logging-Attribute

Attribut Beschreibung Standard Beispiele
spark.log.level Wenn diese Option festgelegt ist, werden alle benutzerdefinierten Protokolleinstellungen überschrieben. Dies entspricht einem Aufruf von SparkContext.setLogLevel() beim Start von Spark. Gültige Logebenen sind: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE und WARN. INFO, DEBUG
spark.executor.syncLogLevel.enabled Wenn der Wert auf true festgelegt ist, wird die über die Methode SparkContext.setLogLevel() angewendete Protokollebene an alle Executors weitergegeben. false true, false
spark.log.level.PackageName Wenn diese Option festgelegt ist, werden alle benutzerdefinierten Protokolleinstellungen überschrieben. Dies entspricht einem Aufruf von SparkContext.setLogLevel(PackageName, level) beim Start von Spark. Gültige Logebenen 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 Beim Planen werden Executors mit ungleichmäßiger Shuffle-Verteilung ausgeschlossen. Dadurch können lange Wartezeiten für das Abrufen von Shuffles reduziert werden, die durch eine ungleichmäßige Shuffle-Verteilung verursacht werden. false true
spark.scheduler.shuffleSkew.minFinishedTasks Mindestanzahl abgeschlossener Shuffle-Map-Aufgaben auf einem Executor, die als Skew behandelt werden sollen. 10 100
spark.scheduler.shuffleSkew.maxExecutorsNumber Maximale Anzahl von Executors, die als Abweichung behandelt werden sollen. Verzerrte Executors werden in der aktuellen Planungsrunde nicht berücksichtigt. 5 10
spark.scheduler.shuffleSkew.maxExecutorsRatio Maximales Verhältnis der Gesamtzahl der Executors, die als asymmetrisch behandelt werden sollen. Verzerrte Executors werden nicht eingeplant. 0,05 0.1
spark.scheduler.shuffleSkew.ratio Ein Vielfaches der durchschnittlichen Anzahl abgeschlossener Shuffle-Map-Aufgaben auf einem Executor, das als Unregelmäßigkeit betrachtet werden soll. 1,5 2.0

Weitere Eigenschaften

Attribut Beschreibung
dataproc.diagnostics.enabled Aktivieren Sie diese Eigenschaft, um Diagnosen für das Fehlschlagen oder Abbrechen eines Batch-Workloads auszuführen. Wenn die Diagnose aktiviert ist, verwendet Ihre Batcharbeitslast weiterhin Rechenressourcen, nachdem die Arbeitslast abgeschlossen ist, bis die Diagnose abgeschlossen ist. Ein URI, der auf den Speicherort der Tar-Datei mit Diagnosedaten 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 Batcharbeitslast installiert wurde.
dataproc.sparkBqConnector.version Mit dieser Eigenschaft können Sie auf eine Spark BigQuery-Connector-Version aktualisieren, die sich von der Version unterscheidet, die mit der Laufzeitversion Ihrer Batcharbeitslast installiert wurde (siehe BigQuery-Connector mit Serverless für Apache Spark verwenden).
dataproc.profiling.enabled Setzen Sie dieses Attribut auf true, um das Profiling für die Serverless for Apache Spark-Arbeitslast zu aktivieren.
dataproc.profiling.name Mit dieser Property legen Sie den Namen fest, der zum Erstellen eines Profils im Profiler-Dienst verwendet wird.
spark.jars Mit dieser Property legen Sie die durch Kommas getrennte Liste der JAR-Dateien fest, die in die Treiber- und Executor-Klassenpfade aufgenommen werden sollen.
spark.archives Mit dieser Eigenschaft legen Sie die durch Kommas getrennte Liste der Archive fest, die in das Arbeitsverzeichnis jedes Executors extrahiert werden sollen. Unterstützt werden die Formate .jar, .tar.gz, .tgz und .zip. Fügen Sie diese Eigenschaft beim Erstellen einer interaktiven Sitzung oder Vorlage für serverlose interaktive Sitzungen hinzu.