Miglioramenti delle prestazioni di Dataproc Spark

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

Altri miglioramenti delle prestazioni di Dataproc: consulta Memorizzazione nella cache dei cluster Dataproc, che contribuisce 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:

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à su 1000 per i cluster con versione 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 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

  1. Nella Google Cloud console, 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 Proprietà del cluster sezione.
    1. Per abilitare i miglioramenti dell'ottimizzazione di Spark:
      1. Fai clic su + AGGIUNGI PROPRIETÀ.
      2. Seleziona spark nell'elenco Prefisso, quindi aggiungi "spark.dataproc.enhanced.optimizer.enabled" nel campo Chiave e "true" nel campo Valore.
    2. Per abilitare i miglioramenti dell'esecuzione di Spark:
      1. Fai clic su + AGGIUNGI PROPRIETÀ.
      2. Seleziona spark nell'elenco Prefisso, quindi aggiungi "spark.dataproc.enhanced.execution.enabled" nel campo Chiave e "true" nel campo Valore.
  4. Completa o conferma gli altri campi di creazione del cluster, quindi fai clic su Crea.

gcloud

  1. 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.
    • IMAGE: i miglioramenti delle prestazioni dell'ottimizzatore e dell'esecuzione di Dataproc Spark 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 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

  1. Specifica le seguenti SoftwareConfig.properties come parte di una clusters.create richiesta:

    • 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

  1. Nella Google Cloud console, apri la pagina Job Dataproc.
  2. Nella pagina Job, fai clic su Invia job, quindi scorri fino alla sezione Proprietà del job.
    1. Per abilitare 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 abilitare 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 o conferma gli altri campi di invio del job, quindi fai clic su Invia.

gcloud

  1. 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-sql o spark-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
      

API

  1. Specifica le seguenti properties per un SparkJob, PySparkJob, SparkSqlJob, o SparkRJob come parte di una jobs.submit richiesta:

    • 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"