Spark-Batcharbeitslasten automatisch optimieren

Mit der automatischen Abstimmung von Managed Service for Apache Spark können Sie wiederkehrende Batcharbeitslasten ohne manuelle Konfiguration im Hinblick auf Leistung und Ausfallsicherheit optimieren. Anstatt komplexe Spark-Parameter auszuwerten, analysiert die automatische Abstimmung frühere Ausführungen (sogenannte Kohorten) und wendet automatisch Einstellungen basierend auf Best Practices für Spark an.

Dieses Dokument enthält Informationen zur automatischen Optimierung von Managed Service for Apache Spark-Batcharbeitslasten. Die Optimierung einer Spark-Arbeitslast im Hinblick auf Leistung und Ausfallsicherheit kann aufgrund der Anzahl der Spark-Konfigurationsoptionen und der Schwierigkeit, die Auswirkungen dieser Optionen auf eine Arbeitslast zu bewerten, eine Herausforderung sein. Das Autotuning von Managed Service for Apache Spark bietet eine Alternative zur manuellen Konfiguration von Arbeitslasten. Dabei werden Spark-Konfigurationseinstellungen automatisch auf eine wiederkehrende Spark-Arbeitslast angewendet. Dies basiert auf Best Practices für die Spark-Optimierung und einer Analyse von Arbeitslastausführungen (sogenannten „Kohorten“).

Für die automatische Abstimmung von Managed Service for Apache Spark registrieren

Wenn Sie sich für den Zugriff auf die Vorabversion des Managed Service for Apache Spark-Autotunings registrieren möchten, die auf dieser Seite beschrieben wird, füllen Sie das Anfrageformular für den Zugriff auf die Managed Service for Apache Spark-Vorabversion aus und senden Sie es ab. Nachdem das Formular genehmigt wurde, haben die im Formular aufgeführten Projekte Zugriff auf die Funktionen in der Vorabversion.

Vorteile

Die automatische Abstimmung von Managed Service for Apache Spark bietet die folgenden Vorteile:

  • Automatische Optimierung: Ineffiziente Managed Service for Apache Spark-Batch- und Spark-Konfigurationen werden automatisch optimiert, was die Joblaufzeiten verkürzen kann.
  • Historisches Lernen: Lernen Sie aus wiederkehrenden Ausführungen, um Empfehlungen anzuwenden, die auf Ihre Arbeitslast zugeschnitten sind.

Autotuning-Kohorten

Die automatische Abstimmung wird auf wiederkehrende Ausführungen (Kohorten) einer Batcharbeitslast angewendet.

Der Kohortenname, den Sie beim Senden einer Batcharbeitslast angeben, identifiziert sie als eine der aufeinanderfolgenden Ausführungen der wiederkehrenden Arbeitslast.

Die automatische Abstimmung wird auf Batcharbeitslast-Kohorten so angewendet:

  • Das Autotuning wird für die zweite und nachfolgende Kohorten einer Arbeitslast berechnet und angewendet. Die automatische Optimierung wird nicht auf die erste Ausführung einer wiederkehrenden Arbeitslast angewendet, da die automatische Optimierung von Managed Service for Apache Spark den Verlauf der Arbeitslast für die Optimierung verwendet.

  • Die automatische Abstimmung wird nicht rückwirkend auf laufende Arbeitslasten angewendet, sondern nur auf neu eingereichte Arbeitslasten.

  • Die automatische Abstimmung lernt und verbessert sich im Laufe der Zeit, indem die Kohortenstatistiken analysiert werden. Damit das System genügend Daten erfassen kann, empfehlen wir, die automatische Abstimmung für mindestens fünf Ausführungen aktiviert zu lassen.

Kohortennamen: Es wird empfohlen, Kohortennamen zu verwenden, mit denen sich der wiederkehrende Arbeitslasttyp identifizieren lässt. Sie können beispielsweise daily_sales_aggregation als Kohortenname für eine geplante Arbeitslast verwenden, die eine tägliche Verkaufsaggregationsaufgabe ausführt.

Szenarien für die automatische Abstimmung

Falls zutreffend, werden beim Autotuning automatisch die folgenden scenarios oder Ziele ausgewählt und ausgeführt, um eine Batcharbeitslast zu optimieren:

  • Skalierung: Konfigurationseinstellungen für das Autoscaling von Spark.
  • Join-Optimierung: Spark-Konfigurationseinstellungen zur Optimierung der Leistung von SQL-Broadcast-Joins.
  • Shuffle-Partitionen: Spark-Konfigurationseinstellungen zum Optimieren von Shuffle-Partitionen.

Autotuning von Managed Service for Apache Spark verwenden

Sie können die automatische Optimierung von Managed Service for Apache Spark für eine Batcharbeitslast über die Google Cloud Console, die Google Cloud CLI, die Dataproc API oder die Cloud-Clientbibliotheken aktivieren.

Console

So aktivieren Sie die automatische Optimierung von Managed Service for Apache Spark bei jeder Übermittlung einer wiederkehrenden Batcharbeitslast:

  1. Rufen Sie in der Google Cloud Console die Seite Jobs für Managed Service for Apache Spark auf.

    Zu Managed Service for Apache Spark-Jobs

  2. Klicken Sie zum Erstellen einer Batcharbeitslast auf Job senden, um die Seite Job senden zu öffnen.

  3. Prüfen Sie, ob unter Computing-Typ für Job auswählen die Option Serverloses Spark ausgewählt ist.

  4. Im Abschnitt Details zum serverlosen Job:

    1. Geben Sie eine Job-ID an oder übernehmen Sie die Standard-ID.
    2. Wählen Sie ein Laufzeitprofil aus oder behalten Sie die Standarddienstkonfiguration für Ihre Region bei. Klicken Sie dann auf der Karte Zusammenfassung auf Konfigurieren oder im Menü Laufzeitprofil auf Neues Profil erstellen, um den Konfigurationsbereich für das Laufzeitprofil zu öffnen.
    3. Maximieren Sie im Konfigurationsbereich für das Laufzeitprofil die Option Zusätzliche Konfiguration und klicken Sie dann neben Weitere Anpassungen auf Bearbeiten.
    4. Im Bereich Weitere Anpassungen unter Autotuning:

      • Klicken Sie auf den Ein/Aus-Button Aktivieren, um die automatische Abstimmung für die Spark-Batcharbeitslast zu aktivieren.
      • Kohorten-ID: Geben Sie die Kohorten-ID ein, die den Batch als Teil einer Reihe wiederkehrender Arbeitslasten identifiziert. Die automatische Abstimmung wird auf die zweite und nachfolgende Arbeitslasten angewendet, die mit dieser Kohorten-ID gesendet werden. Geben Sie beispielsweise daily_sales_aggregation als Kohorten-ID für eine geplante Batcharbeitslast an, die eine tägliche Verkaufsaggregationsaufgabe ausführt.
    5. Klicken Sie im Bereich Weitere Anpassungen auf Speichern und dann im Bereich für die Konfiguration des Laufzeitprofils auf Konfiguration verwenden (oder Neues Profil speichern).

  5. Füllen Sie auf der Seite Job senden die Abschnitte Dateien und Artefakte und Jobausführung und -eigenschaften nach Bedarf aus und klicken Sie dann auf Senden. Weitere Informationen zu diesen Feldern finden Sie unter Batcharbeitslast senden.

gcloud

Wenn Sie die automatische Optimierung von Managed Service for Apache Spark bei jeder Übermittlung einer wiederkehrenden Batcharbeitslast 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=auto  \
    other arguments ...

Ersetzen Sie Folgendes:

  • COMMAND: der Spark-Arbeitslasttyp, z. B. Spark, PySpark, Spark-Sql oder Spark-R.
  • REGION: die Region, in der Ihre Batcharbeitslast ausgeführt wird.
  • COHORT: der Name der Kohorte, die den Batch als eine von mehreren wiederkehrenden Arbeitslasten identifiziert. Die automatische Abstimmung wird auf die zweite und nachfolgende Arbeitslasten angewendet, die mit diesem Kohortennamen gesendet werden. Geben Sie beispielsweise daily_sales_aggregation als Kohortenname für eine geplante Batcharbeitslast an, die eine tägliche Verkaufsaggregationsaufgabe ausführt.
  • --autotuning-scenarios=auto: Autotuning aktivieren.

API

Wenn Sie die automatische Optimierung von Managed Service for Apache Spark bei jeder Übermittlung einer wiederkehrenden Batcharbeitslast aktivieren möchten, senden Sie eine batches.create-Anfrage mit den folgenden Feldern:

  • RuntimeConfig.cohort: der Name der Kohorte, die den Batch als eine von mehreren wiederkehrenden Arbeitslasten identifiziert. Die automatische Abstimmung wird auf die zweite und nachfolgende Arbeitslasten angewendet, die mit diesem Kohortennamen gesendet werden. Geben Sie beispielsweise daily_sales_aggregation als Kohortenname für eine geplante Batcharbeitslast an, die eine tägliche Verkaufsaggregationsaufgabe ausführt.
  • AutotuningConfig.scenarios: Geben Sie AUTO an, um die automatische Abstimmung für die Spark-Batcharbeitslast zu aktivieren.

Beispiel:

...
runtimeConfig:
  cohort: COHORT_NAME
  autotuningConfig:
    scenarios:
    - AUTO
...

Java

Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Java in der Kurzanleitung für Managed Service for Apache Spark mit Clientbibliotheken. Weitere Informationen finden Sie in der API-Referenzdokumentation für Managed Service for Apache Spark Java.

Richten Sie zur Authentifizierung bei Managed Service for Apache Spark die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Wenn Sie die automatische Optimierung von Managed Service for Apache Spark bei jeder Übermittlung 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 Teil einer Reihe wiederkehrender Arbeitslasten identifiziert. Die automatische Abstimmung wird auf die zweite und nachfolgende Arbeitslasten angewendet, die mit diesem Kohortennamen gesendet werden. Sie können beispielsweise daily_sales_aggregation als Kohortenname für eine geplante Batcharbeitslast angeben, die eine tägliche Verkaufsaggregationsaufgabe ausführt.
  • Batch.RuntimeConfig.AutotuningConfig.scenarios: Geben Sie AUTO an, um die automatische Abstimmung für die Spark-Batcharbeitslast zu aktivieren.

Beispiel:

...
Batch batch =
  Batch.newBuilder()
    .setRuntimeConfig(
      RuntimeConfig.newBuilder()
        .setCohort("daily_sales_aggregation")
        .setAutotuningConfig(
          AutotuningConfig.newBuilder()
            .addScenarios(Scenario.AUTO))
    ...
  .build();

batchControllerClient.createBatch(
    CreateBatchRequest.newBuilder()
        .setParent(parent)
        .setBatchId(batchId)
        .setBatch(batch)
        .build());
...

Wenn Sie die API verwenden möchten, müssen Sie die google-cloud-dataproc-Clientbibliothek in der Version 4.43.0 oder höher verwenden. 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 Kurzanleitung für Managed Service for Apache Spark mit Clientbibliotheken. Weitere Informationen finden Sie in der API-Referenzdokumentation für Managed Service for Apache Spark für Python.

Richten Sie zur Authentifizierung bei Managed Service for Apache Spark die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Wenn Sie die automatische Optimierung von Managed Service for Apache Spark bei jeder Übermittlung 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 Teil einer Reihe wiederkehrender Arbeitslasten identifiziert. Die automatische Abstimmung wird auf die zweite und nachfolgende Arbeitslasten angewendet, die mit diesem Kohortennamen gesendet werden. Sie können beispielsweise daily_sales_aggregation als Kohortenname für eine geplante Batcharbeitslast angeben, die eine tägliche Verkaufsaggregationsaufgabe ausführt.
  • batch.runtime_config.autotuning_config.scenarios: Geben Sie AUTO an, um die automatische Abstimmung für die Spark-Batcharbeitslast zu aktivieren.

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.AUTO
]

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 google-cloud-dataproc-Clientbibliothek in der Version 5.10.1 oder höher verwenden. Wenn Sie es Ihrem Projekt hinzufügen möchten, können Sie die folgende Anforderung verwenden:

google-cloud-dataproc>=5.10.1

Airflow

Anstatt jede automatisch abgestimmte Batchkohorte manuell einzureichen, können Sie Airflow verwenden, um die Einreichung jeder wiederkehrenden Batcharbeitslast zu planen. Rufen Sie dazu 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 Teil einer Reihe wiederkehrender Arbeitslasten identifiziert. Die automatische Abstimmung wird auf die zweite und nachfolgende Arbeitslasten angewendet, die mit diesem Kohortennamen gesendet werden. Sie können beispielsweise daily_sales_aggregation als Kohortenname für eine geplante Batcharbeitslast angeben, die eine tägliche Verkaufsaggregationsaufgabe ausführt.
  • batch.runtime_config.autotuning_config.scenarios: Geben Sie AUTO an, um die automatische Abstimmung für die Spark-Batcharbeitslast zu aktivieren.

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.AUTO,
                ]
            }
        },
    },
    batch_id="BATCH_ID",
)

Wenn Sie die API verwenden möchten, müssen Sie die google-cloud-dataproc-Clientbibliothek in der Version 5.10.1 oder höher verwenden. Sie können die folgende Anforderung für die Airflow-Umgebung verwenden:

google-cloud-dataproc>=5.10.1

Informationen zum Aktualisieren des Pakets in Managed Service for Apache Airflow finden Sie unter Python-Abhängigkeiten für Managed Airflow installieren.

Autotuning-Änderungen ansehen

Wenn Sie die Änderungen der automatischen Optimierung von Managed Service for Apache Spark an einer Batch-Arbeitslast aufrufen 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.dataproc.sql.broadcastJoin.hints:
        annotation: Converted 1 Sort-Merge Joins to Broadcast Hash Join
        value: v2;Inner,<hint>
      spark.dynamicAllocation.initialExecutors:
        annotation: Adjusted Initial executors based on stages submitted in first
          2 minutes to 9
        overriddenValue: '2'
        value: '9'
      spark.dynamicAllocation.maxExecutors:
        annotation: Tuned Max executors to 11
        overriddenValue: '5'
        value: '11'
      spark.dynamicAllocation.minExecutors:
        annotation: Changed Min executors to 9
        overriddenValue: '2'
        value: '9'
...

Sie können die neuesten Autotuning-Änderungen, die auf eine laufende, abgeschlossene oder fehlgeschlagene Arbeitslast angewendet wurden, auf der Seite Jobdetails für den Batch in derGoogle Cloud -Console auf dem Tab Zusammenfassung einsehen. Klicken Sie dazu auf der Seite Jobs auf dem Tab Serverloses Spark auf die Job-ID für den Batch.

Bereich mit Zusammenfassung der automatischen Abstimmung.

Preise

Die automatische Abstimmung für Managed Service for Apache Spark wird während der privaten Vorschau ohne zusätzliche Kosten angeboten. Es gelten die Standardpreise für Managed Service for Apache Spark.