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-serverlose Spark-Batch-Arbeitslast einreichen.
Console
Rufen Sie in der Google Cloud Console die Seite Dataproc: Batch erstellen auf.
Klicken Sie im Bereich Properties (Properties) auf Property hinzufügen.
Geben Sie den
Key
(Namen) undValue
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 |
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 („m“, „g“ oder „t“) angegeben. 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 Der Gesamtarbeitsspeicher pro Treiberkern, einschließlich des Treiberspeicher-Overheads, muss für die Standard-Rechenebene zwischen |
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 der Einheit („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 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, die jedem 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. Der Gesamtarbeitsspeicher pro Executor-Kern, einschließlich des Executor-Speicher-Overheads, muss für die Standard-Rechenebene zwischen |
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 Der Gesamtarbeitsspeicher pro Executor-Kern, einschließlich des Executor-Speicher-Overheads, muss für die Standard-Rechenebene zwischen |
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-Cores 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 Lobenebenen 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 Property 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. |