In diesem Dokument wird beschrieben, wie Sie die Dataproc Spark-Leistungsverbesserungen aktivieren, damit Ihre Dataproc Spark-Jobs mehr Daten in kürzerer Zeit und zu geringeren Kosten verarbeiten können.
Zu den Dataproc-Spark-Leistungsverbesserungen gehören:
- Verbesserungen des Spark-Optimierers:
- Für bessere Spark-Pläne geschriebene Optimiererregeln
- Verbesserte Leistung des Dataproc BigQuery-Connectors bei Verwendung in Spark-Jobs
- Verbesserungen der Spark-Ausführung:
- Verbesserungen der Spark-Ausführungs-Engine
Weitere Dataproc-Leistungsverbesserungen: Informationen finden Sie unter Dataproc Cluster-Caching, mit dem die Zeit für den Zugriff auf Daten in Cloud Storage verkürzt werden kann.
Sie können Spark-Leistungsverbesserungen für einen Cluster oder einen Spark-Job aktivieren:
Spark-Leistungsverbesserungen, die für einen Cluster aktiviert wurden, gelten standardmäßig für alle Spark-Jobs, die im Cluster ausgeführt werden, unabhängig davon, ob sie an den Dataproc-Dienst oder direkt an den Cluster gesendet wurden.
Spark-Leistungsverbesserungen können auch für einen Job aktiviert oder deaktiviert werden , der an den Dataproc-Dienst gesendet wird. Die für einen Job angewendeten Einstellungen für Spark-Leistungs verbesserungen ü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 Kosten an. Es gelten die Standard preise für Dataproc in Compute Engine.
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-Version2.2auf1000fest. 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 Dataproc-Spark-Leistungsverbesserungen zu aktivieren, wenn Sie einen Dataproc-Cluster mit den Image-Versionen 2.0.69+, 2.1.17+, 2.2.0+ und späteren Image-Releases erstellen.
Console
- Öffnen Sie in der Google Cloud console die Seite „Dataproc Cluster erstellen “.
- Klicken Sie im Formular Dataproc-Cluster erstellen in der Zeile Cluster in Compute Engine auf Erstellen.
- Klicken Sie auf der Seite Dataproc-Cluster in Compute Engine erstellen
auf das Fenster Cluster anpassen und scrollen Sie dann zum
Abschnitt Clusterattribute.
- So aktivieren Sie Verbesserungen der Spark-Optimierung:
- Klicken Sie auf + ATTRIBUTE HINZUFÜGEN.
- Wählen Sie in der Liste Präfix die Option spark aus und fügen Sie dann „spark.dataproc.enhanced.optimizer.enabled“ in das Feld Schlüssel und „true“ in das Feld Wert ein.
- So aktivieren Sie Verbesserungen der Spark-Ausführung:
- Klicken Sie auf + ATTRIBUTE HINZUFÜGEN.
- Wählen Sie in der Liste Präfix die Option spark aus und fügen Sie dann „spark.dataproc.enhanced.execution.enabled“ in das Feld Schlüssel und „true“ in das Feld Wert ein.
- So aktivieren Sie Verbesserungen der Spark-Optimierung:
- Füllen Sie die anderen Felder zur Clustererstellung aus oder bestätigen Sie sie und klicken Sie dann auf 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 automatische Zonenplatzierung von Dataproc eine Zone in der angegebenen Region aus.
- Sie können das optionale Flag
- IMAGE: Die Leistungsverbesserungen für den Dataproc-Spark-Optimierer und die Ausführung
sind in den Dataproc-Image-Versionen
2.0.69+und2.1.17+sowie in späteren Releases verfügbar. Wenn Sie dieses Flag weglassen, wählt Dataproc die neueste Subminor-Version des Standard-Dataproc-Image in Compute Engine für den Cluster aus (siehe Standard-Dataproc-Image-Version). 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
Geben Sie die folgenden
SoftwareConfig.propertiesals Teil einerclusters.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 den Dataproc-Dienst gesendet wird.
Console
- Öffnen Sie in der Google Cloud console die Seite „Dataproc Jobs “.
- Klicken Sie auf der Seite Jobs auf Job senden und scrollen Sie dann zum Abschnitt
Attribute des Jobs.
- So aktivieren Sie Verbesserungen der Spark-Optimierung:
- Klicken Sie auf + ATTRIBUTE HINZUFÜGEN. Fügen Sie "spark.dataproc.enhanced.optimizer.enabled" in das Feld Schlüssel und "true" in das Feld Wert ein.
- So aktivieren Sie Verbesserungen der Spark-Ausführung:
- Klicken Sie auf + ATTRIBUTE HINZUFÜGEN.
- Fügen Sie „spark.dataproc.enhanced.execution.enabled“ in das Feld Schlüssel und „true“ in das Feld Wert ein.
- So aktivieren Sie 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 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
- 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 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"