Questo documento spiega come abilitare i miglioramenti delle prestazioni di Dataproc Spark per consentire ai job Dataproc Spark di elaborare più dati in meno tempo e con costi ridotti.
I miglioramenti delle prestazioni di Dataproc Spark includono:
- Miglioramenti di Spark Optimizer:
- Regole dell'ottimizzatore scritte per piani Spark migliori
- Prestazioni migliorate del connettore Dataproc BigQuery quando viene utilizzato nei job Spark
- Miglioramenti dell'esecuzione di Spark:
- Miglioramenti del motore di esecuzione di Spark
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 al servizio Dataproc o direttamente al cluster.
I miglioramenti delle prestazioni di Spark possono essere abilitati o disabilitati anche su un job inviato al servizio Dataproc. 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 Dataproc su Compute Engine.
Considerazioni
I miglioramenti delle prestazioni di Spark modificano le proprietà di Spark, incluse le seguenti proprietà:
spark.sql.shuffle.partitions: i miglioramenti delle prestazioni di Spark impostano questa proprietà su1000per i cluster con versione 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 Dataproc Spark quando crei un cluster Dataproc con le versioni immagine 2.0.69+, 2.1.17+, 2.2.0+ e le release immagine successive.
Console
- Nella Google Cloud console, apri la pagina Crea un cluster Dataproc.
- Nel modulo Crea cluster Dataproc, fai clic su Crea nella riga Cluster su Compute Engine.
- Nella pagina Crea un cluster Dataproc su Compute Engine ,
fai clic sul riquadro Personalizza cluster, quindi scorri fino alla
Proprietà del cluster sezione.
- Per abilitare i miglioramenti dell'ottimizzazione di Spark:
- Fai clic su + AGGIUNGI PROPRIETÀ.
- Seleziona spark nell'elenco Prefisso, quindi 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À.
- Seleziona spark nell'elenco Prefisso, quindi 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 creazione del cluster, quindi fai clic su Crea.
gcloud
Esegui il seguente comando gcloud dataproc clusters create in locale 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 di 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 della zona di Dataproc seleziona una zona con la regione specificata.
- Puoi aggiungere il flag facoltativo
- IMAGE: i miglioramenti delle prestazioni dell'ottimizzatore e dell'esecuzione di Dataproc Spark
sono disponibili nelle versioni immagine di Dataproc
2.0.69+e2.1.17+e nelle release successive. Se ometti questo flag, Dataproc selezionerà la versione secondaria più recente dell'immagine Dataproc su Compute Engine predefinita per il cluster (vedi Versione immagine Dataproc predefinita). 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 al servizio Dataproc.
Console
- Nella Google Cloud console, apri la pagina Job Dataproc.
- 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 in locale 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"