Questo documento mostra come abilitare i miglioramenti delle prestazioni di Spark di Managed Service for Apache Spark per aiutare i job di Managed Service for Apache Spark a elaborare più dati in meno tempo e a costi ridotti.
I miglioramenti delle prestazioni di Managed Service for Apache Spark includono:
- Miglioramenti di Spark Optimizer:
- Regole dell'ottimizzatore scritte per piani Spark migliori
- Prestazioni migliorate del connettore BigQuery di Managed Service for Apache Spark quando viene utilizzato nei job Spark
- Miglioramenti dell'esecuzione di Spark:
- Miglioramenti del motore di esecuzione di Spark
Altri miglioramenti delle prestazioni di Managed Service for Apache Spark: consulta Managed Service for Apache Spark Memorizzazione nella cache dei cluster, che aiuta a ridurre il tempo necessario per accedere ai dati in Cloud Storage.
Puoi abilitare i miglioramenti delle prestazioni di Spark su un cluster o su un job Spark:
Per impostazione predefinita, i miglioramenti delle prestazioni di Spark abilitati su un cluster si applicano a tutti i job Spark eseguiti sul cluster, indipendentemente dal fatto che siano stati inviati a Managed Service for Apache Spark o direttamente al cluster.
I miglioramenti delle prestazioni di Spark possono essere abilitati o disabilitati anche su un job inviato a Managed Service for Apache Spark. Le impostazioni dei miglioramenti delle prestazioni di Spark applicate a un job sostituiscono eventuali impostazioni in conflitto impostate a livello di cluster solo per il job specificato.
Prezzi
I miglioramenti delle prestazioni di Spark non comportano costi aggiuntivi. Si applicano i prezzi standard di Managed Service for Apache Spark.
Considerazioni
I miglioramenti delle prestazioni di Spark modificano le proprietà di Spark, incluse le seguenti:
spark.sql.shuffle.partitions: i miglioramenti delle prestazioni di Spark impostano questa proprietà su1000per i cluster con versione dell'immagine2.2. Questa impostazione può rallentare i job di piccole dimensioni.spark.dataproc.sql.catalog.file.index.stats.enabled: questa impostazione può causare condizioni OOM (Out-Of-Memory) del driver se il conteggio delle partizioni Hive è elevato. La disattivazione di questa proprietà può risolvere la condizione OOM.
Abilitare i miglioramenti durante la creazione del cluster
Puoi utilizzare la Google Cloud console, Google Cloud CLI e l'API Dataproc per abilitare i miglioramenti delle prestazioni di Managed Service for Apache Spark quando crei un cluster Managed Service for Apache Spark con le versioni dell'immagine 2.0.69+, 2.1.17+, 2.2.0+ e le release successive dell'immagine.
Console
- Nella Google Cloud console, apri la pagina Crea cluster.
- Fai clic su Configurazione aggiuntiva per espandere la sezione.
- Modifica Personalizzazione e altro.
- Nella sezione Proprietà del cluster, aggiungi le seguenti proprietà:
- Per abilitare i miglioramenti dell'ottimizzazione di Spark:
- Fai clic su + Aggiungi proprietà.
- Seleziona spark nell'elenco Prefisso.
- Inserisci
spark.dataproc.enhanced.optimizer.enablednel campo Chiave etruenel campo Valore.
- Per abilitare i miglioramenti dell'esecuzione di Spark:
- Fai clic su + Aggiungi proprietà.
- Seleziona spark nell'elenco Prefisso.
- Inserisci
spark.dataproc.enhanced.execution.enablednel campo Chiave etruenel campo Valore.
- Per abilitare i miglioramenti dell'ottimizzazione di Spark:
- Completa gli altri campi del cluster, quindi fai clic su Crea cluster.
gcloud
Esegui il seguente comando gcloud dataproc clusters create localmente in una finestra del terminale o in Cloud Shell.
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT_ID \ --region=REGION \ --image-version=IMAGE \ --properties=PROPERTIES
Note:
- CLUSTER_NAME: il nome del cluster, che deve essere univoco all'interno di un progetto. Il nome deve iniziare con una lettera minuscola e può contenere fino a 51 lettere minuscole, numeri e trattini. Non può terminare con un trattino. Il nome di un cluster eliminato può essere riutilizzato.
- PROJECT_ID: il progetto da associare al cluster.
- REGION: la
regione Compute Engine
in cui si troverà il cluster, ad esempio
us-central1.- Puoi aggiungere il flag facoltativo
--zone=ZONEper specificare una zona all'interno della regione specificata, ad esempious-central1-a. Se non specifichi una zona, la funzionalità di posizionamento automatico delle zone di Managed Service for Apache Spark seleziona una zona con la regione specificata.
- Puoi aggiungere il flag facoltativo
- IMAGE: i miglioramenti delle prestazioni dell'ottimizzatore e dell'esecuzione di Managed Service for Apache Spark
sono disponibili nelle versioni dell'immagine di Managed Service for Apache Spark
2.0.69+e2.1.17+e nelle release successive. Se ometti questo flag, Managed Service for Apache Spark selezionerà la versione secondaria più recente dell'immagine predefinita di Managed Service for Apache Spark per il cluster (vedi Versione dell'immagine predefinita di Managed Service for Apache Spark). PROPERTIES:
- Per abilitare i miglioramenti dell'ottimizzazione di Spark, specifica:
spark:spark.dataproc.enhanced.optimizer.enabled=true- Per abilitare i miglioramenti dell'esecuzione di Spark, specifica:
spark:spark.dataproc.enhanced.execution.enabled=true- Per abilitare i miglioramenti dell'ottimizzazione e dell'esecuzione di Spark, specifica:
spark:spark.dataproc.enhanced.optimizer.enabled=true,spark:spark.dataproc.enhanced.execution.enabled=true
API
Specifica le seguenti
SoftwareConfig.propertiescome parte di unaclusters.createrichiesta:- Per abilitare i miglioramenti dell'ottimizzazione di Spark, specifica:
"spark:spark.dataproc.enhanced.optimizer.enabled": "true"- Per abilitare i miglioramenti dell'esecuzione di Spark, specifica:
"spark:spark.dataproc.enhanced.execution.enabled": "true"- Per abilitare i miglioramenti dell'ottimizzazione e dell'esecuzione di Spark, specifica:
"spark:spark.dataproc.enhanced.optimizer.enabled": "true","spark:spark.dataproc.enhanced.execution.enabled": "true"
Abilitare o disabilitare i miglioramenti durante l'invio del job
Puoi utilizzare la Google Cloud console, Google Cloud CLI e l'API Dataproc per abilitare o disabilitare i miglioramenti delle prestazioni di Spark su un job Spark inviato a Managed Service for Apache Spark.
Console
- Nella Google Cloud console, apri la pagina Job.
- Nella pagina Job, fai clic su Invia job, quindi scorri fino alla sezione
Proprietà del job.
- Per abilitare i miglioramenti dell'ottimizzazione di Spark:
- Fai clic su + Aggiungi proprietà. Aggiungi "spark.dataproc.enhanced.optimizer.enabled" nel campo Chiave e "true" nel campo Valore.
- Per abilitare i miglioramenti dell'esecuzione di Spark:
- Fai clic su + Aggiungi proprietà.
- Aggiungi "spark.dataproc.enhanced.execution.enabled" nel campo Chiave e "true" nel campo Valore.
- Per abilitare i miglioramenti dell'ottimizzazione di Spark:
- Completa o conferma gli altri campi di invio del job, quindi fai clic su Invia.
gcloud
Esegui il seguente comando gcloud dataproc jobs submit localmente in una finestra del terminale o in Cloud Shell.
gcloud dataproc jobs submit SPARK_JOB_TYPE \ --cluster=CLUSTER_NAME \ --region=REGION \ --properties=PROPERTIES
Note:
- SPARK_JOB_TYPE: specifica
spark,pyspark,spark-sqlospark-r. - CLUSTER_NAME: il nome del job in cui verrà eseguito il job.
- REGION: la regione in cui si trova il cluster.
PROPERTIES:
- Per abilitare i miglioramenti dell'ottimizzazione di Spark, specifica:
spark.dataproc.enhanced.optimizer.enabled=true- Per abilitare i miglioramenti dell'esecuzione di Spark, specifica:
spark.dataproc.enhanced.execution.enabled=true- Per abilitare i miglioramenti dell'ottimizzazione e dell'esecuzione di Spark, specifica:
spark.dataproc.enhanced.optimizer.enabled=true,spark.dataproc.enhanced.execution.enabled=true
- SPARK_JOB_TYPE: specifica
API
Specifica le seguenti
propertiesper un SparkJob, PySparkJob, SparkSqlJob, o SparkRJob come parte di unajobs.submitrichiesta:- Per abilitare i miglioramenti dell'ottimizzazione di Spark, specifica:
"spark.dataproc.enhanced.optimizer.enabled=true"- Per abilitare i miglioramenti dell'esecuzione di Spark, specifica:
"spark.dataproc.enhanced.execution.enabled=true"- Per abilitare i miglioramenti dell'ottimizzazione e dell'esecuzione di Spark, specifica:
"spark.dataproc.enhanced.execution.enabled=true,spark.dataproc.enhanced.optimizer.enabled=true"