Miglioramenti delle prestazioni di Dataproc Spark

Questo documento mostra come attivare i miglioramenti delle prestazioni di Dataproc Spark per consentire ai job Dataproc Spark di elaborare più dati in meno tempo e a costi ridotti.

I miglioramenti delle prestazioni di Dataproc Spark includono:

  • Miglioramenti dell'ottimizzatore Spark:
    • Regole dell'ottimizzatore scritte per piani Spark migliori
    • Miglioramento delle prestazioni del connettore BigQuery di Dataproc se utilizzato nei job Spark
  • Miglioramenti dell'esecuzione di Spark:
    • Miglioramenti del motore di esecuzione Spark

Altri miglioramenti delle prestazioni di Dataproc:consulta la memorizzazione nella cache dei cluster di Dataproc, che consente di ridurre il tempo dedicato all'accesso ai dati in Cloud Storage.

Puoi attivare i miglioramenti delle prestazioni di Spark su un cluster o su un job Spark:

  • I miglioramenti delle prestazioni di Spark abilitati su un cluster vengono applicati, per impostazione predefinita, a tutti i job Spark eseguiti sul cluster, indipendentemente dal fatto che siano stati inviati al servizio Dataproc o inviati direttamente al cluster.

  • I miglioramenti delle prestazioni di Spark possono anche essere attivati o disattivati in un job inviato al servizio Dataproc. Le impostazioni di miglioramento 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. Vengono applicati i prezzi standard di Dataproc su Compute Engine.

Considerazioni

I miglioramenti delle prestazioni di Spark modificano le proprietà di Spark, tra cui le seguenti proprietà:

  • spark.sql.shuffle.partitions: i miglioramenti delle prestazioni di Spark impostano questa proprietà su 1000 per i cluster della versione dell'immagine 2.2. Questa impostazione può rallentare i job di piccole dimensioni.
  • spark.dataproc.sql.catalog.file.index.stats.enabled: Questa impostazione può causare condizioni di errore di memoria 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 console Google Cloud , Google Cloud CLI e l'API Dataproc per abilitare i miglioramenti delle prestazioni di Dataproc Spark quando crei un cluster Dataproc con versioni immagine 2.0.69+, 2.1.17+, 2.2.0+ e versioni immagine successive.

Console

  1. Nella console Google Cloud , apri la pagina Crea un cluster Dataproc.
  2. Nel modulo Crea cluster Dataproc, fai clic su Crea nella riga Cluster su Compute Engine.
  3. Nella pagina Crea un cluster Dataproc su Compute Engine, fai clic sul riquadro Personalizza cluster, quindi scorri fino alla sezione Proprietà cluster.
    1. Per attivare i miglioramenti dell'ottimizzazione di Spark:
      1. Fai clic su + AGGIUNGI PROPRIETÀ.
      2. Seleziona spark nell'elenco Prefisso, poi aggiungi "spark.dataproc.enhanced.optimizer.enabled" nel campo Chiave e "true" nel campo Valore.
    2. Per attivare i miglioramenti dell'esecuzione di Spark:
      1. Fai clic su + AGGIUNGI PROPRIETÀ.
      2. Seleziona spark nell'elenco Prefisso, poi aggiungi "spark.dataproc.enhanced.execution.enabled" nel campo Chiave e "true" nel campo Valore.
  4. Completa la compilazione o la conferma degli altri campi di creazione del cluster, poi fai clic su Crea.

gcloud

  1. Esegui il 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=ZONE per specificare una zona all'interno della regione specificata, ad esempio us-central1-a. Se non specifichi una zona, la funzionalità di posizionamento automatico delle zone di Dataproc seleziona una zona con la regione specificata.
    • IMAGE: L'ottimizzatore Spark di Dataproc e i miglioramenti delle prestazioni di esecuzione sono disponibili nelle versioni immagine di Dataproc 2.0.69+ e 2.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 attivare i miglioramenti dell'ottimizzazione di Spark, specifica:
      spark:spark.dataproc.enhanced.optimizer.enabled=true
      
      • Per attivare i miglioramenti dell'esecuzione di Spark, specifica:
      spark:spark.dataproc.enhanced.execution.enabled=true
      
      • Per attivare l'ottimizzazione e i miglioramenti dell'esecuzione di Spark, specifica:
      spark:spark.dataproc.enhanced.optimizer.enabled=true,spark:spark.dataproc.enhanced.execution.enabled=true
      

API

  1. Specifica quanto segue SoftwareConfig.properties come parte di una richiesta clusters.create:

    • Per attivare i miglioramenti dell'ottimizzazione di Spark, specifica:
    "spark:spark.dataproc.enhanced.optimizer.enabled": "true"
    
    • Per attivare i miglioramenti dell'esecuzione di Spark, specifica:
    "spark:spark.dataproc.enhanced.execution.enabled": "true"
    
    • Per attivare i miglioramenti dell'ottimizzazione e dell'esecuzione di Spark, specifica:
    "spark:spark.dataproc.enhanced.optimizer.enabled": "true","spark:spark.dataproc.enhanced.execution.enabled": "true"
    

Attivare o disattivare i miglioramenti al momento dell'invio del job

Puoi utilizzare la console Google Cloud , Google Cloud CLI e l'API Dataproc per attivare o disattivare i miglioramenti delle prestazioni di Spark in un job Spark inviato al servizio Dataproc.

Console

  1. Nella console Google Cloud , apri la pagina Job di Dataproc.
  2. Nella pagina Job, fai clic su Invia job, quindi scorri fino alla sezione Proprietà del job.
    1. Per attivare i miglioramenti dell'ottimizzazione di Spark:
      1. Fai clic su + AGGIUNGI PROPRIETÀ. Aggiungi "spark.dataproc.enhanced.optimizer.enabled" nel campo Chiave e "true" nel campo Valore.
    2. Per attivare i miglioramenti dell'esecuzione di Spark:
      1. Fai clic su + AGGIUNGI PROPRIETÀ.
      2. Aggiungi "spark.dataproc.enhanced.execution.enabled" nel campo Chiave e "true" nel campo Valore.
  3. Completa la compilazione o la conferma degli altri campi di invio del job, quindi fai clic su Invia.

gcloud

  1. Esegui il 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-sql o spark-r .
    • CLUSTER_NAME: il nome del job in cui verrà eseguito.
    • REGION: la regione in cui si trova il cluster.
    • PROPERTIES:

      • Per attivare i miglioramenti dell'ottimizzazione di Spark, specifica:
      spark.dataproc.enhanced.optimizer.enabled=true
      
      • Per attivare i miglioramenti dell'esecuzione di Spark, specifica:
      spark.dataproc.enhanced.execution.enabled=true
      
      • Per attivare l'ottimizzazione e i miglioramenti dell'esecuzione di Spark, specifica:
      spark.dataproc.enhanced.optimizer.enabled=true,spark.dataproc.enhanced.execution.enabled=true
      

API

  1. Specifica i seguenti properties per un SparkJob, PySparkJob, SparkSqlJob o SparkRJob nell'ambito di una richiesta jobs.submit:

    • Per attivare i miglioramenti dell'ottimizzazione di Spark, specifica:
    "spark.dataproc.enhanced.optimizer.enabled=true"
    
    • Per attivare i miglioramenti dell'esecuzione di Spark, specifica:
    "spark.dataproc.enhanced.execution.enabled=true"
    
    • Per attivare l'ottimizzazione e i miglioramenti dell'esecuzione di Spark, specifica:
    "spark.dataproc.enhanced.execution.enabled=true,spark.dataproc.enhanced.optimizer.enabled=true"