Leistungsverbesserungen für Managed Service for Apache Spark

In diesem Dokument wird beschrieben, wie Sie die Leistungsverbesserungen für Spark in Managed Service for Apache Spark aktivieren, damit Ihre Managed Service for Apache Spark-Jobs mehr Daten in kürzerer Zeit und zu geringeren Kosten verarbeiten können.

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

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

Weitere Leistungsverbesserungen für Managed Service for Apache Spark:Informationen zum Cluster-Caching in Managed Service for Apache Spark, mit dem die Zugriffszeit für Daten in Cloud Storage verkürzt wird.

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

  • Spark-Leistungsverbesserungen, die für einen Cluster aktiviert sind, werden standardmäßig auf alle Spark-Jobs angewendet, die im Cluster ausgeführt werden. Das gilt unabhängig davon, ob sie an den Managed Service for Apache Spark oder direkt an den Cluster gesendet werden.

  • Spark-Leistungsverbesserungen können auch für einen Job aktiviert oder deaktiviert werden, der an Managed Service for Apache Spark gesendet wird. Einstellungen zur Verbesserung der Spark-Leistung, die auf einen Job angewendet werden, überschreiben alle in Konflikt stehenden Einstellungen, die auf Clusterebene nur für den angegebenen Job festgelegt wurden.

Preise

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

Hinweise

Durch die Spark-Leistungsverbesserungen werden Spark-Attribute angepasst, darunter die folgenden:

  • spark.sql.shuffle.partitions: Durch die Leistungsverbesserungen für Spark wird diese Eigenschaft für Cluster mit der Image-Version 2.2 auf 1000 festgelegt. Diese Einstellung kann kleine Jobs verlangsamen.
  • spark.dataproc.sql.catalog.file.index.stats.enabled: Diese Einstellung kann zu OOM-Bedingungen (Out-Of-Memory) des Treibers führen, wenn die Anzahl der Hive-Partitionen hoch ist. Wenn Sie diese Property deaktivieren, kann das Problem behoben werden.

Optimierungen bei der Clustererstellung aktivieren

Sie können die Cloud de Confiance 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 Cloud de Confiance 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 Abschnitt Clusterattribute die folgenden Attribute hinzu:
    • So aktivieren Sie die Verbesserungen der Spark-Optimierung:
      1. Klicken Sie auf + Properties hinzufügen.
      2. Wählen Sie in der Liste Präfix die Option spark aus.
      3. Geben Sie im Feld Schlüssel den Wert spark.dataproc.enhanced.optimizer.enabled und im Feld Wert den Wert true ein.
    • So aktivieren Sie die Verbesserungen bei der Spark-Ausführung:
      1. Klicken Sie auf + Properties hinzufügen.
      2. Wählen Sie in der Liste Präfix die Option spark aus.
      3. Geben Sie im Feld Schlüssel den Wert spark.dataproc.enhanced.execution.enabled und im Feld Wert den Wert true ein.
  5. Füllen Sie die anderen Clusterfelder aus und klicken Sie auf Cluster erstellen.

gcloud

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

    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 bis zu 51 Kleinbuchstaben, Ziffern und Bindestriche enthalten. Es darf nicht mit einem Bindestrich enden. Der Name eines gelöschten Clusters kann wiederverwendet werden.
    • PROJECT_ID: Das Projekt, das dem Cluster zugeordnet 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 innerhalb der angegebenen Region anzugeben, z. B. us-central1-a. Wenn Sie keine Zone angeben, wird mit der Funktion Automatische Zonenzuweisung von Managed Service for Apache Spark eine Zone in der angegebenen Region ausgewählt.
    • IMAGE: Die Optimierungs- und Ausführungsleistungsverbesserungen von Managed Service for Apache Spark sind in den Image-Versionen 2.0.69+ und 2.1.17+ von Managed Service for Apache Spark und späteren Versionen verfügbar. Wenn Sie dieses Flag weglassen, wählt Managed Service for Apache Spark die neueste untergeordnete Version des Standard-Managed Service for Apache Spark-Images für den Cluster aus (siehe Standard-Managed Service for Apache Spark-Imageversion).
    • PROPERTIES:

      • Geben Sie Folgendes an, um Verbesserungen der Spark-Optimierung zu aktivieren:
      spark:spark.dataproc.enhanced.optimizer.enabled=true
      
      • Um Verbesserungen bei der Spark-Ausführung zu aktivieren, geben Sie Folgendes an:
      spark:spark.dataproc.enhanced.execution.enabled=true
      
      • Geben Sie Folgendes an, um die Spark-Optimierung und die Ausführungsverbesserungen 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"
    
    • Um Verbesserungen bei der Spark-Ausführung zu aktivieren, geben Sie Folgendes an:
    "spark:spark.dataproc.enhanced.execution.enabled": "true"
    
    • Geben Sie Folgendes an, um die Spark-Optimierung und die Ausführung zu verbessern:
    "spark:spark.dataproc.enhanced.optimizer.enabled": "true","spark:spark.dataproc.enhanced.execution.enabled": "true"
    

Optimierungen beim Senden von Jobs aktivieren oder deaktivieren

Sie können die Cloud de Confiance Console, die Google Cloud CLI und die Dataproc API verwenden, um Leistungsverbesserungen für Spark 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 Cloud de Confiance Console die Seite Jobs.
  2. Klicken Sie auf der Seite Jobs auf Job senden und scrollen Sie dann zum Abschnitt Eigenschaften des Jobs.
    1. So aktivieren Sie die Verbesserungen der Spark-Optimierung:
      1. Klicken Sie auf + Properties hinzufügen. Fügen Sie „spark.dataproc.enhanced.optimizer.enabled“ in das Feld Schlüssel und „true“ in das Feld Wert ein.
    2. So aktivieren Sie die Verbesserungen bei der Spark-Ausführung:
      1. Klicken Sie auf + Properties hinzufügen.
      2. Fügen Sie „spark.dataproc.enhanced.execution.enabled“ im Feld Schlüssel und „true“ im Feld Wert hinzu.
  3. Füllen Sie die anderen Felder für die Jobübermittlung 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 Shell aus.

    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
      
      • Um Verbesserungen bei der Spark-Ausführung zu aktivieren, geben Sie Folgendes an:
      spark.dataproc.enhanced.execution.enabled=true
      
      • Geben Sie Folgendes an, um die Spark-Optimierung und die Ausführungsverbesserungen 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"
    
    • Um Verbesserungen bei der Spark-Ausführung zu aktivieren, geben Sie Folgendes an:
    "spark.dataproc.enhanced.execution.enabled=true"
    
    • Geben Sie Folgendes an, um die Spark-Optimierung und die Ausführungsverbesserungen zu aktivieren:
    "spark.dataproc.enhanced.execution.enabled=true,spark.dataproc.enhanced.optimizer.enabled=true"