In diesem Dokument finden Sie Informationen zum automatischen Optimieren von Spark-Arbeitslasten. Die Optimierung einer Spark-Arbeitslast hinsichtlich Leistung und Ausfallsicherheit kann aufgrund der Anzahl der Spark-Konfigurationsoptionen und der Schwierigkeit, die Auswirkungen dieser Optionen auf eine Arbeitslast zu beurteilen, eine Herausforderung sein. Die automatische Optimierung von Dataproc Serverless ist eine Alternative zur manuellen Arbeitslastkonfiguration. Dabei werden Spark-Konfigurationseinstellungen basierend auf Best Practices für die Spark-Optimierung und einer Analyse von Arbeitslastausführungen automatisch auf eine wiederkehrende Spark-Arbeitslast angewendet.
Für die automatische Optimierung von Dataproc Serverless registrieren
Wenn Sie sich für den Zugriff auf die auf dieser Seite beschriebene Dataproc Serverless-Autotuning-Vorabversion registrieren möchten, füllen Sie das Gemini in BigQuery-Vorabregistrierungsformular aus und senden Sie es. Nachdem das Formular genehmigt wurde, haben die im Formular aufgeführten Projekte Zugriff auf die Vorschaufunktionen.
Vorteile
Die automatische Optimierung von Dataproc Serverless bietet folgende Vorteile:
- Verbesserte Leistung: Optimierung zur Leistungssteigerung
- Schnellere Optimierung: Automatische Konfiguration, um zeitaufwendige manuelle Konfigurationstests zu vermeiden
- Erhöhte Ausfallsicherheit: Automatische Arbeitsspeicherzuweisung zur Vermeidung von speicherbedingten Fehlern
Beschränkungen
Für die automatische Optimierung von Dataproc Serverless gelten die folgenden Einschränkungen:
- Die automatische Optimierung wird berechnet und auf die zweite und nachfolgenden Ausführungen einer Arbeitslast angewendet. Die erste Ausführung einer wiederkehrenden Arbeitslast wird nicht automatisch optimiert, da das automatische Dataproc Serverless-Autotuning den Arbeitslastverlauf für die Optimierung verwendet.
- Das Verringern des Arbeitsspeichers wird nicht unterstützt.
- Die automatische Optimierung wird nicht rückwirkend auf laufende Arbeitslasten angewendet, sondern nur auf neu eingereichte Arbeitslastkohorten.
Kohorten für die automatische Optimierung
Die automatische Optimierung wird auf wiederkehrende Ausführungen einer Batcharbeitslast angewendet, die als Kohorten bezeichnet werden.
Der Name der Kohorte, den Sie beim Einreichen einer Arbeitslast angeben, identifiziert sie als einen der aufeinanderfolgenden Ausführungen der wiederkehrenden Arbeitslast.
Wir empfehlen, Kohortennamen zu verwenden, die die Art der Arbeitslast beschreiben oder anderweitig dazu beitragen, die Ausführungen einer Arbeitslast als Teil einer wiederkehrenden Arbeitslast zu identifizieren. Geben Sie beispielsweise daily_sales_aggregation
als Kohortennamen für eine geplante Arbeitslast an, die eine tägliche Aufgabe zur Zusammenführung von Verkäufen ausführt.
Szenarien für die automatische Abstimmung
Sie können die automatische Optimierung von Dataproc Serverless auf Ihre Arbeitslast anwenden, indem Sie eines oder mehrere der folgenden Szenarien für die automatische Optimierung auswählen:
MEMORY
: Automatische Optimierung der Spark-Arbeitsspeicherzuweisung, um potenzielle Fehler aufgrund fehlenden Arbeitsspeichers bei der Arbeitslast vorherzusagen und zu vermeiden. Beheben Sie eine zuvor fehlgeschlagene Arbeitslast aufgrund eines OOM-Fehlers (Out-of-Memory).SCALING
: Konfigurationseinstellungen für das Spark-Autoscaling automatisch optimierenBROADCAST_HASH_JOIN
: Spark-Konfigurationseinstellungen automatisch optimieren, um die Leistung von SQL-Broadcast-Joins zu verbessern.
Preise
Die automatische Optimierung von Dataproc Serverless ist während der Vorabversion kostenlos. Es gelten die standardmäßigen Dataproc Serverless-Preise.
Regionale Verfügbarkeit
Sie können die automatische Optimierung von Dataproc Serverless für Batches verwenden, die in verfügbaren Compute Engine-Regionen eingereicht werden.
Dataproc Serverless-Autotuning verwenden
Sie können die serverlose automatische Optimierung von Dataproc für eine Arbeitslast über die Google Cloud Console, die Google Cloud CLI oder die Dataproc API aktivieren.
Console
So aktivieren Sie die automatische Optimierung von Dataproc Serverless bei jeder Einreichung einer wiederkehrenden Batcharbeitslast:
Rufen Sie in der Google Cloud Console die Dataproc-Seite Batches auf.
Klicken Sie auf Erstellen, um eine Batch-Arbeitslast zu erstellen.
Füllen Sie im Abschnitt Container die folgenden Felder für Ihre Spark-Arbeitslast aus:
Kohorte:Der Name der Kohorte, der den Batch als eine von mehreren wiederkehrenden Arbeitslasten identifiziert. Die automatische Optimierung wird auf die zweite und nachfolgenden Arbeitslasten angewendet, die mit diesem Kohortennamen eingereicht werden. Geben Sie beispielsweise
daily_sales_aggregation
als Kohortennamen für eine geplante Arbeitslast an, die eine tägliche Aufgabe zur Zusammenführung von Verkäufen ausführt.Szenarien für die automatische Abstimmung:Eines oder mehrere Szenarien für die automatische Abstimmung, mit denen die Arbeitslast optimiert werden soll, z. B.
BROADCAST_HASH_JOIN
,MEMORY
undSCALING
. Sie können die Szenarioauswahl bei jeder Batchkohorte ändern.
Füllen Sie nach Bedarf die anderen Abschnitte der Seite Batch erstellen aus und klicken Sie dann auf Senden. Weitere Informationen zu diesen Feldern finden Sie unter Batcharbeitslast einreichen.
gcloud
Wenn Sie die serverlose automatische Optimierung von Dataproc bei jeder Einreichung einer wiederkehrenden Batch-Arbeitslast aktivieren möchten, führen Sie den folgenden gcloud CLI-Befehl gcloud dataproc batches submit
lokal in einem Terminalfenster oder in Cloud Shell aus.
gcloud dataproc batches submit COMMAND \ --region=REGION \ --cohort=COHORT \ --autotuning-scenarios=SCENARIOS \ other arguments ...
Ersetzen Sie Folgendes:
- COMMAND: der Spark-Arbeitslasttyp, z. B.
Spark
,PySpark
,Spark-Sql
oderSpark-R
. - REGION: die Region, in der Ihre Arbeitslast ausgeführt wird.
COHORT: Der Name der Kohorte, der den Batch als eine von mehreren wiederkehrenden Arbeitslasten identifiziert. Die automatische Optimierung wird auf die zweite und nachfolgenden Arbeitslasten angewendet, die mit diesem Kohortennamen gesendet werden. Geben Sie beispielsweise
daily_sales_aggregation
als Kohortennamen für eine geplante Arbeitslast an, die eine tägliche Aufgabe zur Zusammenführung von Verkäufen ausführt.SCENARIOS: Eine oder mehrere durch Kommas getrennte Autotuning-Szenarien, mit denen die Arbeitslast optimiert werden soll, z. B.
--autotuning-scenarios=MEMORY,SCALING
. Sie können die Szenarioliste bei jeder Einreichung einer Batchkohorte ändern.
API
Wenn Sie die automatische Optimierung von Dataproc Serverless bei jeder Einreichung einer wiederkehrenden Batcharbeitslast aktivieren möchten, senden Sie eine batches.create-Anfrage mit den folgenden Feldern:
RuntimeConfig.cohort
: der Name der Kohorte, der den Batch als eine von mehreren wiederkehrenden Arbeitslasten identifiziert. Die automatische Optimierung wird auf die zweite und nachfolgenden Arbeitslasten angewendet, die mit diesem Kohortennamen eingereicht werden. Geben Sie beispielsweisedaily_sales_aggregation
als Kohortennamen für eine geplante Arbeitslast an, die eine tägliche Aufgabe zur Zusammenführung von Verkäufen ausführt.AutotuningConfig.scenarios
: Ein oder mehrere Autotuning-Szenarien, mit denen die Arbeitslast optimiert werden soll, z. B.BROADCAST_HASH_JOIN
,MEMORY
undSCALING
. Sie können die Szenarioliste bei jeder Einreichung einer Batchkohorte ändern.
Beispiel:
...
runtimeConfig:
cohort: daily_sales_aggregation
autotuningConfig:
scenarios:
- BROADCAST_HASH_JOIN
- MEMORY
- SCALING
...
Java
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Java in der Dataproc-Serverless-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Dataproc Serverless Java API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Dataproc Serverless zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Wenn Sie die automatische Optimierung von Dataproc Serverless bei jeder Einreichung einer wiederkehrenden Batcharbeitslast aktivieren möchten, rufen Sie BatchControllerClient.createBatch mit einer CreateBatchRequest auf, die die folgenden Felder enthält:
Batch.RuntimeConfig.cohort
: Der Name der Kohorte, der den Batch als eine von mehreren wiederkehrenden Arbeitslasten identifiziert. Die automatische Optimierung wird auf die zweite und nachfolgenden Arbeitslasten angewendet, die mit diesem Kohortennamen eingereicht werden. Sie können beispielsweisedaily_sales_aggregation
als Kohortennamen für eine geplante Arbeitslast angeben, auf die eine tägliche Aufgabe zur Verkaufsaggregation angewendet wird.Batch.RuntimeConfig.AutotuningConfig.scenarios
: Ein oder mehrere Autotuning-Szenarien, mit denen die Arbeitslast optimiert werden soll, z. B.BROADCAST_HASH_JOIN
,MEMORY
oderSCALING
. Sie können die Szenarioliste bei jeder Einreichung einer Batchkohorte ändern. Eine vollständige Liste der Szenarien finden Sie in der Javadoc-Datei AutotuningConfig.Scenario.
Beispiel:
...
Batch batch =
Batch.newBuilder()
.setRuntimeConfig(
RuntimeConfig.newBuilder()
.setCohort("daily_sales_aggregation")
.setAutotuningConfig(
AutotuningConfig.newBuilder()
.addScenarios(Scenario.SCALING))
...
.build();
batchControllerClient.createBatch(
CreateBatchRequest.newBuilder()
.setParent(parent)
.setBatchId(batchId)
.setBatch(batch)
.build());
...
Wenn Sie die API verwenden möchten, benötigen Sie die google-cloud-dataproc
-Clientbibliothek Version 4.43.0
oder höher. Sie können eine der folgenden Konfigurationen verwenden, um die Bibliothek Ihrem Projekt hinzuzufügen.
Maven
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-dataproc</artifactId>
<version>4.43.0</version>
</dependency>
</dependencies>
Gradle
implementation 'com.google.cloud:google-cloud-dataproc:4.43.0'
SBT
libraryDependencies += "com.google.cloud" % "google-cloud-dataproc" % "4.43.0"
Python
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Python in der Dataproc-Serverless-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Dataproc Serverless Python API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Dataproc Serverless zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Wenn Sie die automatische Optimierung von Dataproc Serverless bei jeder Einreichung einer wiederkehrenden Batcharbeitslast aktivieren möchten, rufen Sie BatchControllerClient.create_batch mit einem Batch auf, der die folgenden Felder enthält:
batch.runtime_config.cohort
: Der Name der Kohorte, der den Batch als eine von mehreren wiederkehrenden Arbeitslasten identifiziert. Die automatische Optimierung wird auf die zweite und nachfolgenden Arbeitslasten angewendet, die mit diesem Kohortennamen eingereicht werden. Sie können beispielsweisedaily_sales_aggregation
als Kohortennamen für eine geplante Arbeitslast angeben, auf die eine tägliche Aufgabe zur Verkaufsaggregation angewendet wird.batch.runtime_config.autotuning_config.scenarios
: Ein oder mehrere Autotuning-Szenarien zur Optimierung der Arbeitslast, z. B.BROADCAST_HASH_JOIN
,MEMORY
,SCALING
. Sie können die Szenarioliste bei jeder Batch-Kohorte ändern. Eine vollständige Liste der Szenarien finden Sie in der Referenz zu Szenarien.
Beispiel:
# Create a client
client = dataproc_v1.BatchControllerClient()
# Initialize request argument(s)
batch = dataproc_v1.Batch()
batch.pyspark_batch.main_python_file_uri = "gs://bucket/run_tpcds.py"
batch.runtime_config.cohort = "daily_sales_aggregation"
batch.runtime_config.autotuning_config.scenarios = [
Scenario.SCALING
]
request = dataproc_v1.CreateBatchRequest(
parent="parent_value",
batch=batch,
)
# Make the request
operation = client.create_batch(request=request)
Wenn Sie die API verwenden möchten, müssen Sie die Clientbibliothek google-cloud-dataproc
Version 5.10.1
oder höher verwenden. Sie können sie Ihrem Projekt mit der folgenden Anforderung hinzufügen:
google-cloud-dataproc>=5.10.1
Airflow
Wenn Sie die automatische Optimierung von Dataproc Serverless bei jeder Einreichung einer wiederkehrenden Batcharbeitslast aktivieren möchten, rufen Sie BatchControllerClient.create_batch mit einem Batch auf, der die folgenden Felder enthält:
batch.runtime_config.cohort
: Der Name der Kohorte, der den Batch als eine von mehreren wiederkehrenden Arbeitslasten identifiziert. Die automatische Optimierung wird auf die zweite und nachfolgenden Arbeitslasten angewendet, die mit diesem Kohortennamen eingereicht werden. Sie können beispielsweisedaily_sales_aggregation
als Kohortennamen für eine geplante Arbeitslast angeben, die eine tägliche Aufgabe zur Verkaufsaggregation ausführt.batch.runtime_config.autotuning_config.scenarios
: Ein oder mehrere Autotuning-Szenarien zur Optimierung der Arbeitslast, z. B.BROADCAST_HASH_JOIN
,MEMORY
,SCALING
. Sie können die Szenarioliste bei jeder Einreichung einer Batch-Kohorte ändern. Eine vollständige Liste der Szenarien finden Sie in der Referenz zu Szenarien.
Beispiel:
create_batch = DataprocCreateBatchOperator(
task_id="batch_create",
batch={
"pyspark_batch": {
"main_python_file_uri": PYTHON_FILE_LOCATION,
},
"environment_config": {
"peripherals_config": {
"spark_history_server_config": {
"dataproc_cluster": PHS_CLUSTER_PATH,
},
},
},
"runtime_config": {
"cohort": "daily_sales_aggregation",
"autotuning_config": {
"scenarios": [
Scenario.SCALING,
]
}
},
},
batch_id="BATCH_ID",
)
Wenn Sie die API verwenden möchten, benötigen Sie die Clientbibliothek google-cloud-dataproc
Version 5.10.1
oder höher. Sie können die folgende Anforderung für Airflow-Umgebungen verwenden:
google-cloud-dataproc>=5.10.1
Informationen zum Aktualisieren des Pakets in Cloud Composer finden Sie unter Python-Abhängigkeiten für Cloud Composer installieren .
Änderungen an der automatischen Optimierung ansehen
Wenn Sie die Änderungen der automatischen Optimierung von Dataproc Serverless für eine Batcharbeitslast sehen möchten, führen Sie den Befehl gcloud dataproc batches describe
aus.
Beispiel: Die Ausgabe von gcloud dataproc batches describe
sieht in etwa so aus:
...
runtimeInfo:
propertiesInfo:
# Properties set by autotuning.
autotuningProperties
spark.driver.memory:
annotation: Driver OOM was detected
value: 11520m
spark.driver.memoryOverhead:
annotation: Driver OOM was detected
value: 4608m
# Old overwritten properties.
userProperties
...
Die letzten Änderungen der automatischen Optimierung, die auf eine laufende, abgeschlossene oder fehlgeschlagene Arbeitslast angewendet wurden, finden Sie in der Google Cloud Console auf der Seite Batchdetails auf dem Tab Untersuchen.