Leistungsverbesserungen für Managed Service for Apache Spark

In diesem Dokument erfahren Sie, wie Sie die Spark-Leistungsverbesserungen von Managed Service for Apache Spark aktivieren, damit Ihre Managed Service for Apache Spark-Jobs in kürzerer Zeit mehr Daten verarbeiten können und die Kosten sinken.

Zu den Leistungsverbesserungen von Managed Service for Apache Spark gehören:

  • Verbesserungen des Spark-Optimierers:
    • Optimiererregeln für bessere Spark-Pläne
    • Verbesserte Leistung des Managed Service for Apache Spark BigQuery-Connectors bei Verwendung in Spark-Jobs
  • Verbesserungen der Spark-Ausführung:
    • Verbesserungen der Spark-Ausführungs-Engine

Weitere Leistungsverbesserungen von Managed Service for Apache Spark:Informationen zum Cluster-Caching von Managed Service for Apache Spark finden Sie unter Managed Service for Apache Spark Cluster-Caching. Dadurch lässt sich die Zeit für den Zugriff auf Daten in Cloud Storage verkürzen.

Sie können Spark-Leistungsverbesserungen für einen Cluster oder einen Spark-Job aktivieren:

Preise

Für Spark-Leistungsverbesserungen fallen keine zusätzlichen Gebühren an. Es gelten die Standard Preise für Managed Service for Apache Spark.

Hinweise

Spark-Leistungsverbesserungen passen Spark-Attribute an, einschließlich der folgenden Attribute:

  • spark.sql.shuffle.partitions: Spark-Leistungsverbesserungen legen dieses Attribut für Cluster mit der Image-Version 2.2 auf 1000 fest. Diese Einstellung kann kleine Jobs verlangsamen.
  • spark.dataproc.sql.catalog.file.index.stats.enabled: Diese Einstellung kann zu OOM-Bedingungen (Out-Of-Memory) für den Treiber führen, wenn die Anzahl der Hive-Partitionen hoch ist. Wenn Sie dieses Attribut deaktivieren, kann die OOM-Bedingung behoben werden.

Verbesserungen beim Erstellen von Clustern aktivieren

Sie können die Google Cloud console, die Google Cloud CLI und die Dataproc API verwenden, um Leistungsverbesserungen für Managed Service for Apache Spark zu aktivieren, wenn Sie einen Managed Service for Apache Spark-Cluster mit den Image-Versionen 2.0.69+, 2.1.17+, 2.2.0+ und späteren Image-Releases erstellen.

Console

  1. Öffnen Sie in der Google Cloud console die Seite Cluster erstellen.
  2. Klicken Sie auf Zusätzliche Konfiguration , um den Bereich zu maximieren.
  3. Bearbeiten Sie Anpassung und Sonstiges.
  4. Fügen Sie im Bereich Clusterattribute die folgenden Attribute hinzu:
    • So aktivieren Sie Verbesserungen der Spark-Optimierung:
      1. Klicken Sie auf + Attribute hinzufügen.
      2. Wählen Sie in der Liste Präfix die Option spark aus.
      3. Geben Sie im Feld Schlüssel spark.dataproc.enhanced.optimizer.enabled und im Feld Wert true ein.
    • So aktivieren Sie Verbesserungen der Spark-Ausführung:
      1. Klicken Sie auf + Attribute hinzufügen.
      2. Wählen Sie in der Liste Präfix die Option spark aus.
      3. Geben Sie im Feld Schlüssel spark.dataproc.enhanced.execution.enabled und im Feld Wert true ein.
  5. Füllen Sie die anderen Clusterfelder aus und klicken Sie dann auf Cluster erstellen.

gcloud

  1. Führen Sie den folgenden Befehl gcloud dataproc clusters create lokal in einem Terminalfenster oder in Cloud Shellaus.

    gcloud dataproc clusters create CLUSTER_NAME \
        --project=PROJECT_ID \
        --region=REGION \
        --image-version=IMAGE \
        --properties=PROPERTIES
    

    Hinweise:

    • CLUSTER_NAME: Der Clustername, der innerhalb eines Projekts eindeutig sein muss. Der Name muss mit einem Kleinbuchstaben beginnen und darf maximal 51 Kleinbuchstaben, Zahlen und Bindestriche enthalten. Er darf nicht mit einem Bindestrich enden. Der Name eines gelöschten Clusters kann wiederverwendet werden.
    • PROJECT_ID: Das Projekt, das mit dem Cluster verknüpft werden soll.
    • REGION: Die Compute Engine-Region , in der sich der Cluster befindet, z. B. us-central1.
      • Sie können das optionale Flag --zone=ZONE hinzufügen, um eine Zone in der angegebenen Region anzugeben, z. B. us-central1-a. Wenn Sie keine Zone angeben, wählt die Funktion zur automatischen Zonenauswahl von Managed Service for Apache Spark autozone placement eine Zone in der angegebenen Region aus.
    • IMAGE: Die Leistungsverbesserungen für den Optimierer und die Ausführung von Managed Service for Apache Spark sind in den Image-Versionen 2.0.69+ und 2.1.17+ von Managed Service for Apache Spark sowie in späteren Releases verfügbar. Wenn Sie dieses Flag weglassen, wählt Managed Service for Apache Spark die neueste Nebenversion des Standard-Images von Managed Service for Apache Spark für den Cluster aus (siehe Standard-Image-Version von Managed Service for Apache Spark).
    • PROPERTIES:

      • Geben Sie Folgendes an, um Verbesserungen der Spark-Optimierung zu aktivieren:
      spark:spark.dataproc.enhanced.optimizer.enabled=true
      
      • Geben Sie Folgendes an, um Verbesserungen der Spark-Ausführung zu aktivieren:
      spark:spark.dataproc.enhanced.execution.enabled=true
      
      • Geben Sie Folgendes an, um Verbesserungen der Spark-Optimierung und -Ausführung zu aktivieren:
      spark:spark.dataproc.enhanced.optimizer.enabled=true,spark:spark.dataproc.enhanced.execution.enabled=true
      

API

  1. Geben Sie die folgenden SoftwareConfig.properties als Teil einer clusters.create-Anfrage an:

    • Geben Sie Folgendes an, um Verbesserungen der Spark-Optimierung zu aktivieren:
    "spark:spark.dataproc.enhanced.optimizer.enabled": "true"
    
    • Geben Sie Folgendes an, um Verbesserungen der Spark-Ausführung zu aktivieren:
    "spark:spark.dataproc.enhanced.execution.enabled": "true"
    
    • Geben Sie Folgendes an, um Verbesserungen der Spark-Optimierung und -Ausführung zu aktivieren:
    "spark:spark.dataproc.enhanced.optimizer.enabled": "true","spark:spark.dataproc.enhanced.execution.enabled": "true"
    

Verbesserungen beim Senden von Jobs aktivieren oder deaktivieren

Sie können die Google Cloud console, die Google Cloud CLI und die Dataproc API verwenden, um Spark-Leistungsverbesserungen für einen Spark-Job zu aktivieren oder zu deaktivieren, der an Managed Service for Apache Spark gesendet wird.

Console

  1. Öffnen Sie in der Google Cloud console die Seite „Jobs“.
  2. Klicken Sie auf der Seite Jobs auf Job senden und scrollen Sie dann zum Bereich Attribute des Jobs.
    1. So aktivieren Sie Verbesserungen der Spark-Optimierung:
      1. Klicken Sie auf + Attribute hinzufügen. Fügen Sie im Feld Schlüssel „spark.dataproc.enhanced.optimizer.enabled“ und im Feld Wert „true“ hinzu.
    2. So aktivieren Sie Verbesserungen der Spark-Ausführung:
      1. Klicken Sie auf + Attribute hinzufügen.
      2. Fügen Sie im Feld Schlüssel „spark.dataproc.enhanced.execution.enabled“ und im Feld Wert „true“ hinzu.
  3. Füllen Sie die anderen Felder zum Senden von Jobs aus oder bestätigen Sie sie und klicken Sie dann auf Senden.

gcloud

  1. Führen Sie den folgenden Befehl gcloud dataproc jobs submit lokal in einem Terminalfenster oder in Cloud Shellaus.

    gcloud dataproc jobs submit SPARK_JOB_TYPE \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --properties=PROPERTIES
    

    Hinweise:

    • SPARK_JOB_TYPE: Geben Sie spark, pyspark, spark-sql oder spark-r an .
    • CLUSTER_NAME: Der Name des Jobs, in dem der Job ausgeführt wird.
    • REGION: Die Region, in der sich der Cluster befindet.
    • PROPERTIES:

      • Geben Sie Folgendes an, um Verbesserungen der Spark-Optimierung zu aktivieren:
      spark.dataproc.enhanced.optimizer.enabled=true
      
      • Geben Sie Folgendes an, um Verbesserungen der Spark-Ausführung zu aktivieren:
      spark.dataproc.enhanced.execution.enabled=true
      
      • Geben Sie Folgendes an, um Verbesserungen der Spark-Optimierung und -Ausführung zu aktivieren:
      spark.dataproc.enhanced.optimizer.enabled=true,spark.dataproc.enhanced.execution.enabled=true
      

API

  1. Geben Sie die folgenden properties für einen SparkJob, PySparkJob, SparkSqlJob oder SparkRJob als Teil einer jobs.submit Anfrage an:

    • Geben Sie Folgendes an, um Verbesserungen der Spark-Optimierung zu aktivieren:
    "spark.dataproc.enhanced.optimizer.enabled=true"
    
    • Geben Sie Folgendes an, um Verbesserungen der Spark-Ausführung zu aktivieren:
    "spark.dataproc.enhanced.execution.enabled=true"
    
    • Geben Sie Folgendes an, um Verbesserungen der Spark-Optimierung und -Ausführung zu aktivieren:
    "spark.dataproc.enhanced.execution.enabled=true,spark.dataproc.enhanced.optimizer.enabled=true"