In diesem Dokument erfahren Sie, wie Sie die Leistungsverbesserungen für Apache Spark im 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 für 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 für Managed Service for Apache Spark:Informationen finden Sie unter Managed Service for Apache Spark Cluster-Caching, mit dem die Zeit für den Zugriff auf Daten in Cloud Storage verkürzt werden kann.
Sie können die Leistungsverbesserungen für Spark auf einem Cluster oder in einem Spark-Job aktivieren:
Die auf einem Cluster aktivierten Leistungsverbesserungen für Spark gelten standardmäßig für alle Spark-Jobs, die auf dem Cluster ausgeführt werden, unabhängig davon, ob sie an den Managed Service for Apache Spark oder direkt an den Cluster gesendet wurden.
Leistungsverbesserungen für Spark können auch für einen Job aktiviert oder deaktiviert werden , der an den Managed Service for Apache Spark gesendet wird. Die für einen Job angewendeten Einstellungen für die Leistungsverbesserungen für Spark überschreiben nur für den angegebenen Job alle in Konflikt stehenden Einstellungen auf Clusterebene.
Preise
Für die Leistungsverbesserungen für Spark fallen keine zusätzlichen Gebühren an. Es gelten die Standard Preise für Managed Service for Apache Spark.
Hinweise
Die Leistungsverbesserungen für Spark passen Spark-Attribute an, darunter die folgenden:
spark.sql.shuffle.partitions: Die Leistungsverbesserungen für Spark legen dieses Attribut für Cluster mit der Image-Version2.2auf1000fest. Diese Einstellung kann kleine Jobs verlangsamen.spark.dataproc.sql.catalog.file.index.stats.enabled: Diese Einstellung kann zu OOM-Fehlern (Out-Of-Memory) des Treibers führen, wenn die Anzahl der Hive-Partitionen hoch ist. Wenn Sie dieses Attribut deaktivieren, kann der OOM-Fehler behoben werden.
Verbesserungen beim Erstellen von Clustern aktivieren
Sie können die Google Cloud Leistungsverbesserungen für Managed Service for Apache Spark über dieconsole, die Google Cloud CLI und die Dataproc API aktivieren, wenn Sie einen Managed Service for Apache Spark-Cluster mit den Image-Versionen 2.0.69+, 2.1.17+, 2.2.0+ und höher erstellen.
Console
- Öffnen Sie in der Google Cloud console die Seite Cluster erstellen.
- Klicken Sie auf Zusätzliche Konfiguration , um diesen Bereich zu maximieren.
- Bearbeiten Sie Anpassung und Sonstiges.
- Fügen Sie im Bereich Clusterattribute die folgenden Attribute hinzu:
- So aktivieren Sie die Verbesserungen der Spark-Optimierung:
- Klicken Sie auf + Attribute hinzufügen.
- Wählen Sie in der Liste Präfix die Option spark aus.
- Geben Sie im Feld Schlüssel
spark.dataproc.enhanced.optimizer.enabledund im Feld Werttrueein.
- So aktivieren Sie die Verbesserungen der Spark-Ausführung:
- Klicken Sie auf + Attribute hinzufügen.
- Wählen Sie in der Liste Präfix die Option spark aus.
- Geben Sie im Feld Schlüssel
spark.dataproc.enhanced.execution.enabledund im Feld Werttrueein.
- So aktivieren Sie die Verbesserungen der Spark-Optimierung:
- Füllen Sie die anderen Clusterfelder aus und klicken Sie dann auf Cluster erstellen.
gcloud
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=ZONEhinzufü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.
- Sie können das optionale Flag
- IMAGE: Die Leistungsverbesserungen für den Optimierer und die Ausführung von Managed Service for Apache Spark
sind in den Image-Versionen von Managed Service for Apache Spark
2.0.69+und2.1.17+und in späteren Versionen verfügbar. Wenn Sie dieses Flag weglassen, wählt Managed Service for Apache Spark die neueste untergeordnete 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 die Verbesserungen der Spark-Optimierung zu aktivieren:
spark:spark.dataproc.enhanced.optimizer.enabled=true- Geben Sie Folgendes an, um die Verbesserungen der Spark-Ausführung zu aktivieren:
spark:spark.dataproc.enhanced.execution.enabled=true- Geben Sie Folgendes an, um die Verbesserungen der Spark-Optimierung und -Ausführung zu aktivieren:
spark:spark.dataproc.enhanced.optimizer.enabled=true,spark:spark.dataproc.enhanced.execution.enabled=true
API
Geben Sie die folgenden
SoftwareConfig.propertiesals Teil einerclusters.create-Anfrage an:- Geben Sie Folgendes an, um die Verbesserungen der Spark-Optimierung zu aktivieren:
"spark:spark.dataproc.enhanced.optimizer.enabled": "true"- Geben Sie Folgendes an, um die Verbesserungen der Spark-Ausführung zu aktivieren:
"spark:spark.dataproc.enhanced.execution.enabled": "true"- Geben Sie Folgendes an, um die 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 Leistungsverbesserungen für Spark über die Google Cloud console, die Google Cloud CLI und die Dataproc API für einen Spark-Job aktivieren oder deaktivieren, der an den Managed Service for Apache Spark gesendet wird.
Console
- Öffnen Sie in der Google Cloud console die Seite „Jobs“.
- Klicken Sie auf der Seite Jobs auf Job senden und scrollen Sie dann zum Bereich
Attribute des Jobs.
- So aktivieren Sie die Verbesserungen der Spark-Optimierung:
- Klicken Sie auf + Attribute hinzufügen. Geben Sie im Feld Schlüssel „spark.dataproc.enhanced.optimizer.enabled“ und im Feld Wert „true“ ein.
- So aktivieren Sie die Verbesserungen der Spark-Ausführung:
- Klicken Sie auf + Attribute hinzufügen.
- Geben Sie im Feld Schlüssel „spark.dataproc.enhanced.execution.enabled“ und im Feld Wert „true“ ein.
- So aktivieren Sie die Verbesserungen der Spark-Optimierung:
- Füllen Sie die anderen Felder zum Senden von Jobs aus oder bestätigen Sie sie und klicken Sie dann auf Senden.
gcloud
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-sqloderspark-ran . - 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 die Verbesserungen der Spark-Optimierung zu aktivieren:
spark.dataproc.enhanced.optimizer.enabled=true- Geben Sie Folgendes an, um die Verbesserungen der Spark-Ausführung zu aktivieren:
spark.dataproc.enhanced.execution.enabled=true- Geben Sie Folgendes an, um die Verbesserungen der Spark-Optimierung und -Ausführung zu aktivieren:
spark.dataproc.enhanced.optimizer.enabled=true,spark.dataproc.enhanced.execution.enabled=true
- SPARK_JOB_TYPE: Geben Sie
API
Geben Sie die folgenden
propertiesfür einen SparkJob, PySparkJob, SparkSqlJob oder SparkRJob als Teil einerjobs.submitAnfrage an:- Geben Sie Folgendes an, um die Verbesserungen der Spark-Optimierung zu aktivieren:
"spark.dataproc.enhanced.optimizer.enabled=true"- Geben Sie Folgendes an, um die Verbesserungen der Spark-Ausführung zu aktivieren:
"spark.dataproc.enhanced.execution.enabled=true"- Geben Sie Folgendes an, um die Verbesserungen der Spark-Optimierung und -Ausführung zu aktivieren:
"spark.dataproc.enhanced.execution.enabled=true,spark.dataproc.enhanced.optimizer.enabled=true"