In diesem Dokument wird beschrieben, wie Sie die Leistungsverbesserungen für Dataproc Spark aktivieren, damit Ihre Dataproc Spark-Jobs mehr Daten in kürzerer Zeit und zu geringeren Kosten verarbeiten können.
Zu den Leistungsverbesserungen von Dataproc Spark gehören:
- Verbesserungen des Spark-Optimierers:
- Für bessere Spark-Pläne geschriebene Optimierungsregeln
- Verbesserte Leistung des Dataproc BigQuery-Connectors bei Verwendung in Spark-Jobs
- Verbesserungen bei der Spark-Ausführung:
- Verbesserungen der Spark-Ausführungs-Engine
Weitere Leistungsverbesserungen für Dataproc:Informationen zum Cluster-Caching in Dataproc finden Sie unter Dataproc. Dadurch wird die Zeit für den Zugriff auf Daten in Cloud Storage verkürzt.
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 Dataproc-Dienst oder direkt an den Cluster gesendet werden.
Spark-Leistungsverbesserungen können auch für einen Job aktiviert oder deaktiviert werden, der an den Dataproc-Dienst 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 Standardpreise für Dataproc auf Compute Engine.
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-Version2.2
auf1000
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 Google Cloud Console, die Google Cloud CLI und die Dataproc API verwenden, um die Leistungsverbesserungen für Dataproc Spark 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.
Konsole
- Öffnen Sie in der Google Cloud Console die Dataproc-Seite 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 den Bereich Cluster anpassen und scrollen Sie dann zum Abschnitt Clusterattribute.
- 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 und fügen Sie im Feld Schlüssel „spark.dataproc.enhanced.optimizer.enabled“ und im Feld Wert „true“ hinzu.
- So aktivieren Sie die Verbesserungen bei 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 im Feld Schlüssel „spark.dataproc.enhanced.execution.enabled“ und im Feld Wert „true“ hinzu.
- So aktivieren Sie die 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 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. Sie 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 in der angegebenen Region anzugeben, z. B.us-central1-a
. Wenn Sie keine Zone angeben, wählt das Dataproc-Feature zur automatischen Zonenplatzierung eine Zone in der angegebenen Region aus.
- Sie können das optionale Flag
- IMAGE: Der Dataproc-Spark-Optimizer und die Verbesserungen der Ausführungsleistung sind in den Dataproc-Image-Versionen
2.0.69+
und2.1.17+
und späteren Versionen verfügbar. Wenn Sie dieses Flag weglassen, wählt Dataproc die neueste Subminor-Version des standardmäßigen Dataproc in Compute Engine-Images für den Cluster aus (siehe Standardmäßige Dataproc-Image-Version). 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
Geben Sie die folgenden
SoftwareConfig.properties
als Teil einerclusters.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"
- Um die Spark-Optimierung und die Ausführungsverbesserungen zu aktivieren, geben Sie Folgendes an:
"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 Google Cloud 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 den Dataproc-Dienst gesendet wird.
Konsole
- Ö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 Properties (Eigenschaften) des Jobs.
- So aktivieren Sie die 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 die Verbesserungen bei der Spark-Ausführung:
- Klicken Sie auf + ATTRIBUTE HINZUFÜGEN.
- Fügen Sie im Feld Schlüssel „spark.dataproc.enhanced.execution.enabled“ und im Feld Wert „true“ hinzu.
- So aktivieren Sie die Verbesserungen der Spark-Optimierung:
- Füllen Sie die anderen Felder für die Jobübermittlung 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 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
oderspark-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
- SPARK_JOB_TYPE: Geben Sie
API
Geben Sie die folgenden
properties
für einen SparkJob, PySparkJob, SparkSqlJob oder SparkRJob als Teil einerjobs.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"