Proprietà Spark

Managed Service for Apache Spark utilizza le proprietà Spark per determinare le risorse di computing, memoria e disco da allocare al workload batch. Queste impostazioni della proprietà influiscono sul consumo e sul costo della quota di workload. Per saperne di più, consulta Quote di Managed Service for Apache Spark e Prezzi di Managed Service for Apache Spark.

Per configurare le proprietà che controllano la raccolta delle metriche, consulta Metriche Spark.

Imposta le proprietà del workload batch Spark

Puoi specificare le proprietà di Spark quando invii un workload batch di Managed Service for Apache Spark utilizzando la console Google Cloud , gcloud CLI o l'API Dataproc.

Console

  1. Nella console Google Cloud , vai alla pagina Job di Managed Service for Apache Spark e fai clic su Invia job per aprire la pagina Invia un job.

    Vai ai job Managed Service for Apache Spark

  2. In Seleziona il tipo di computing per il job, verifica che sia selezionato Spark serverless.

  3. Nella sezione Esecuzione e proprietà del job, in Proprietà Spark, fai clic su Aggiungi proprietà (oppure nella sezione Dettagli job serverless, fai clic su Configura nella scheda Riepilogo Profilo di runtime, espandi Configurazione aggiuntiva, fai clic su Modifica accanto ad Altre personalizzazioni e fai clic su Aggiungi proprietà in Proprietà Spark).

  4. Inserisci la Chiave (nome) e il Valore di una proprietà Spark supportata.

gcloud

Di seguito è riportato un esempio di invio di un batch con gcloud CLI. Più proprietà sono separate da virgole.

gcloud dataproc batches submit spark \
    --properties=spark.checkpoint.compress=true,spark.driver.cores=8  \
    --region=REGION \
    other args ...

API

Imposta RuntimeConfig.properties con le proprietà Spark supportate nell'ambito di una richiesta batches.create.

Proprietà Spark supportate

Managed Service for Apache Spark supporta la maggior parte delle proprietà Spark, ma non supporta le proprietà Spark relative a YARN e allo shuffling, come spark.master=yarn e spark.shuffle.service.enabled. Se il codice dell'applicazione Spark imposta una proprietà YARN o shuffle, l'applicazione non funzionerà.

Proprietà dell'ambiente di runtime

Managed Service for Apache Spark supporta le seguenti proprietà Spark personalizzate per la configurazione dell'ambiente di runtime:

Proprietà Descrizione
spark.dataproc.driverEnv.ENVIRONMENT_VARIABLE_NAME Aggiungi ENVIRONMENT_VARIABLE_NAME al processo del driver. Puoi specificare più variabili di ambiente.
spark.executorEnv.ENVIRONMENT_VARIABLE_NAME Aggiungi ENVIRONMENT_VARIABLE_NAME al processo dell'esecutore. Puoi specificare più variabili di ambiente.

Proprietà del livello

Proprietà Descrizione Predefinito
dataproc.tier Il livello su cui viene eseguito un workload batch, standard o premium (consulta Livelli di Managed Service for Apache Spark). Le sessioni interattive vengono sempre eseguite nel livello Premium dataproc.tier.
  • L'impostazione di questa proprietà del livello batch su standard imposta le proprietà del runtime e del livello delle risorse di Managed Service for Apache Spark sul livello standard (consulta le proprietà di allocazione delle risorse).
  • Se imposti questa proprietà del livello batch su premium, spark.dataproc.engine viene impostato su lightningEngine. Nei runtime precedenti alla versione 4.0, l'impostazione del livello Premium imposta anche spark.dataproc.driver.compute.tier e spark.dataproc.executor.compute.tier su premium. Puoi eseguire l'override della maggior parte delle impostazioni del livello batch impostate automaticamente, ma non di quelle del livello di computing impostate automaticamente per i batch che utilizzano runtime precedenti alla versione 3.0 (consulta le proprietà di allocazione delle risorse).
  • Nei runtime 4.0 e versioni successive, i workload batch vengono eseguiti nel livello Premium, a meno che non imposti questa proprietà su standard. Questa proprietà determina le risorse di computing e disco del driver e degli esecutori e sostituisce le proprietà di allocazione delle risorse del livello di computing e disco, che non sono supportate. Per saperne di più, consulta Funzionalità e miglioramenti di Runtime 4.0.
  • Runtime 4.0 e versioni successive: premium
  • Runtime precedenti: standard

Proprietà del motore e del runtime

Proprietà Descrizione Predefinito
spark.dataproc.engine Il motore da utilizzare per eseguire il workload batch o la sessione interattiva: lightningEngine (vedi Lightning Engine) o il motore default.
  • Workload batch: se selezioni la proprietà dataproc.tier standard per il tuo workload, questa proprietà viene impostata automaticamente su default e non può essere sostituita. Se selezioni premium dataproc.tier per il tuo workload, questa proprietà viene impostata automaticamente su lightningEngine, ma puoi modificare l'impostazione su default, se necessario.
  • Sessioni interattive: questa impostazione viene configurata automaticamente su default, ma puoi modificarla in lightningEngine. Tieni presente che le sessioni interattive vengono sempre eseguite nel livello premium. Quando crei un profilo di runtime (modello di sessione) nella pagina Crea un profilo di runtime della console Google Cloud , il livello Premium e l'opzione Abilita il motore Lightning per accelerare le prestazioni (che imposta spark.dataproc.engine=lightningEngine) sono selezionati per impostazione predefinita.
  • Batch (livello Standard): default
  • Batch (livello Premium): lightningEngine
  • Sessioni: default
spark.dataproc.lightningEngine.runtime Il runtime da utilizzare quando è selezionato Lightning Engine per un workload batch o una sessione interattiva: default o native (Esecuzione di query nativa). default

Proprietà di allocazione delle risorse

Nei runtime 4.0 e versioni successive, il driver e gli esecutori utilizzano la forma della memoria highmem per impostazione predefinita, che determina la loro memoria. Un driver o un esecutore non utilizza una forma di memoria se imposti la memoria o l'overhead di memoria o se utilizza un acceleratore GPU. Per saperne di più, consulta Come vengono applicate le forme di memoria.

Managed Service for Apache Spark supporta le seguenti proprietà Spark per la configurazione dell'allocazione delle risorse:

Proprietà Descrizione Predefinito Esempi
spark.driver.cores Il numero di core (vCPU) da allocare al driver Spark. Valori validi: 4, 8, 16. 4
spark.driver.memory

La quantità di memoria da allocare al processo del driver Spark, specificata nel formato stringa di memoria JVM con un suffisso dell'unità di misura ("m", "g" o "t").

Memoria totale del driver per core del driver, incluso l'overhead della memoria del driver, che deve essere compresa tra 1024m e 7424m per il livello di computing Standard (24576m per il livello di computing Premium). Ad esempio, se spark.driver.cores = 4, allora 4096m <= spark.driver.memory + spark.driver.memoryOverhead <= 29696m.

512m, 2g
spark.driver.memoryOverhead

La quantità di memoria JVM aggiuntiva da allocare al processo del driver Spark, specificata nel formato stringa della memoria JVM con un suffisso dell'unità di dimensione ("m", "g" o "t").

Si tratta di memoria non heap associata a overhead della JVM, stringhe interne e altri overhead nativi, inclusa la memoria utilizzata da altri processi driver, come i processi driver PySpark, e la memoria utilizzata da altri processi non driver in esecuzione nel container. La dimensione massima della memoria del container in cui viene eseguito il driver è determinata dalla somma di spark.driver.memoryOverhead più spark.driver.memory.

La memoria totale del driver per core del driver, incluso l'overhead della memoria del driver, deve essere compresa tra 1024m e 7424m per il livello di computing Standard (24576m per il livello di computing Premium). Ad esempio, se spark.driver.cores = 4, allora 4096m <= spark.driver.memory + spark.driver.memoryOverhead <= 29696m.

10% della memoria del driver, ad eccezione dei workload batch PySpark, che per impostazione predefinita utilizzano il 40% della memoria del driver 512m, 2g
spark.driver.memoryOverheadFactor

Supportato solo nei runtime 4.0 e versioni successive. La frazione di memoria del driver da allocare come overhead della memoria del driver se spark.driver.memoryOverhead non è impostato. Deve essere maggiore di 0 e minore o uguale a 1.0.

Se il driver utilizza una forma di memoria, questa proprietà determina il modo in cui la memoria della forma di memoria viene suddivisa tra spark.driver.memory e spark.driver.memoryOverhead. L'impostazione di questa proprietà non modifica la forma della memoria del driver.

0.1, ad eccezione dei workload batch PySpark, che per impostazione predefinita sono 0.4 0.2, 0.3
spark.dataproc.driver.memory.shape

Supportato solo nei runtime 4.0 e versioni successive. La forma della memoria del driver, highmem o standard. La forma di memoria highmem fornisce 7,75 GiB di memoria per vCPU, mentre la forma di memoria standard fornisce 3,75 GiB di memoria per vCPU. Managed Service for Apache Spark suddivide questa memoria tra spark.driver.memory e spark.driver.memoryOverhead.

Non puoi impostare questa proprietà insieme a spark.driver.memory o spark.driver.memoryOverhead. Per modificare la modalità di suddivisione della memoria della forma della memoria, imposta spark.driver.memoryOverheadFactor.

highmem highmem, standard
spark.dataproc.driver.compute.tier Supportato solo nei runtime 3.0 e precedenti. Il livello di computing da utilizzare sul driver. Il livello di computing Premium offre prestazioni per core più elevate, ma viene fatturato a una tariffa più alta. Nei runtime 4.0 e versioni successive, utilizza invece la proprietà dataproc.tier. standard standard, premium
spark.dataproc.driver.disk.size La quantità di spazio su disco allocata al driver, specificata con un suffisso dell'unità di misura ("k", "m", "g" o "t"). Deve essere almeno 250GiB. Se sul driver è selezionato il livello di disco Premium, le dimensioni valide sono 375g, 750g, 1500g, 3000g, 6000g o 9000g. Se selezioni il livello di disco Premium e 16 core del driver, la dimensione minima del disco è 750 GB.

Nei runtime 4.0 e versioni successive, il livello del workload determina le dimensioni predefinite del disco del driver. Per saperne di più, consulta Dimensioni predefinite del disco.

  • Runtime 4.0 e versioni successive: dipende dal livello
  • Runtime precedenti: 100GiB per core
1024g, 2t
spark.dataproc.driver.disk.tier Supportato solo nei runtime 3.0 e precedenti. Il livello del disco da utilizzare per lo spazio di archiviazione locale e di shuffling sul driver. Il livello di disco Premium offre prestazioni migliori in termini di IOPS e throughput, ma viene fatturato a una tariffa più elevata. Se nel driver è selezionato il livello di disco Premium, è necessario selezionare anche il livello di computing Premium utilizzando spark.dataproc.driver.compute.tier=premium e specificare la quantità di spazio su disco utilizzando spark.dataproc.driver.disk.size.

Se è selezionato il livello di disco Premium, il driver alloca ulteriori 50 GiB di spazio su disco per lo spazio di archiviazione del sistema, che non è utilizzabile dalle applicazioni utente.

Nei runtime 4.0 e versioni successive, utilizza invece la proprietà dataproc.tier.

standard standard, premium
spark.executor.cores Il numero di core (vCPU) da allocare a ogni esecutore Spark. Valori validi: 4, 8, 16. 4
spark.executor.memory

La quantità di memoria da allocare a ogni processo executor Spark, specificata nel formato stringa di memoria JVM con un suffisso di unità di dimensione ("m", "g" o "t").

La memoria totale dell'esecutore per core dell'esecutore, incluso l'overhead della memoria dell'esecutore, deve essere compresa tra 1024m e 7424m per il livello di computing Standard (24576m per il livello di computing Premium). Ad esempio, se spark.executor.cores = 4, allora 4096m <= spark.executor.memory + spark.executor.memoryOverhead <= 29696m.

512m, 2g
spark.executor.memoryOverhead

La quantità di memoria JVM aggiuntiva da allocare al processo dell'esecutore Spark, specificata nel formato stringa della memoria JVM con un suffisso dell'unità di dimensione ("m", "g" o "t").

Si tratta della memoria non heap utilizzata per gli overhead della JVM, le stringhe interne e altri overhead nativi. Include la memoria dell'esecutore PySpark e la memoria utilizzata da altri processi non esecutori in esecuzione nel container. La dimensione massima della memoria del container in cui viene eseguito l'esecutore è determinata dalla somma di spark.executor.memoryOverhead più spark.executor.memory.

La memoria totale dell'esecutore per core dell'esecutore, incluso l'overhead della memoria dell'esecutore, deve essere compresa tra 1024m e 7424m per il livello di computing Standard (24576m per il livello di computing Premium). Ad esempio, se spark.executor.cores = 4, allora 4096m <= spark.executor.memory + spark.executor.memoryOverhead <= 29696m.

10% della memoria dell'esecutore, ad eccezione dei workload batch PySpark, per i quali il valore predefinito è il 40% della memoria dell'esecutore 512m, 2g
spark.executor.memoryOverheadFactor

Supportato solo nei runtime 4.0 e versioni successive. La frazione di memoria dell'esecutore da allocare come overhead della memoria dell'esecutore se spark.executor.memoryOverhead non è impostato. Deve essere maggiore di 0 e minore o uguale a 1.0.

Se gli esecutori utilizzano una forma di memoria, questa proprietà determina il modo in cui la memoria della forma di memoria viene suddivisa tra spark.executor.memory e spark.executor.memoryOverhead. L'impostazione di questa proprietà non modifica la forma della memoria degli esecutori.

0.1, ad eccezione dei workload batch PySpark, che per impostazione predefinita sono 0.4 0.2, 0.3
spark.dataproc.executor.memory.shape

Supportato solo nei runtime 4.0 e versioni successive. La forma della memoria degli esecutori, highmem o standard. La forma di memoria highmem fornisce 7,75 GiB di memoria per vCPU, mentre la forma di memoria standard fornisce 3,75 GiB di memoria per vCPU. Managed Service for Apache Spark suddivide questa memoria tra spark.executor.memory e spark.executor.memoryOverhead.

Non puoi impostare questa proprietà insieme a spark.executor.memory o spark.executor.memoryOverhead. Per modificare la modalità di suddivisione della memoria della forma della memoria, imposta spark.executor.memoryOverheadFactor.

highmem highmem, standard
spark.dataproc.executor.compute.tier Supportato solo nei runtime 3.0 e precedenti. Il livello di computing da utilizzare sugli esecutori. Il livello di computing Premium offre prestazioni per core più elevate, ma viene fatturato a una tariffa più alta. Nei runtime 4.0 e versioni successive, utilizza invece la proprietà dataproc.tier. standard standard, premium
spark.dataproc.executor.disk.size La quantità di spazio su disco allocata a ogni esecutore, specificata con un suffisso di unità di misura ("k", "m", "g" o "t"). Lo spazio su disco dell'esecutore può essere utilizzato per i dati di shuffling e per la gestione temporanea delle dipendenze. Deve essere almeno 250GiB. Se sull'esecutore è selezionato il livello di disco Premium, le dimensioni valide sono 375g, 750g, 1500g, 3000g, 6000g o 9000g. Se vengono selezionati il livello disco Premium e 16 core esecutori, la dimensione minima del disco è 750 g.

Nei runtime 4.0 e versioni successive, il livello del workload determina le dimensioni predefinite del disco di ogni esecutore. Per saperne di più, consulta Dimensioni predefinite del disco.

  • Runtime 4.0 e versioni successive: dipende dal livello
  • Runtime precedenti: 100GiB per core
1024g, 2t
spark.dataproc.executor.disk.tier Supportato solo nei runtime 3.0 e precedenti. Il livello del disco da utilizzare per l'archiviazione locale e di shuffle sugli esecutori. Il livello di disco Premium offre prestazioni migliori in termini di IOPS e throughput, ma viene fatturato a una tariffa più elevata. Se sull'esecutore è selezionato il livello di disco Premium, è necessario selezionare anche il livello di computing Premium utilizzando spark.dataproc.executor.compute.tier=premium e specificare la quantità di spazio su disco utilizzando spark.dataproc.executor.disk.size.

Se è selezionato il livello di disco Premium, a ogni esecutore vengono allocati ulteriori 50 GiB di spazio su disco per lo spazio di archiviazione del sistema, che non è utilizzabile dalle applicazioni utente.

Nei runtime 4.0 e versioni successive, utilizza invece la proprietà dataproc.tier.

standard standard, premium
spark.executor.instances Il numero iniziale di esecutori da allocare. Dopo l'avvio di un workload batch, la scalabilità automatica potrebbe modificare il numero di esecutori attivi. Deve essere compreso tra 2 e 2000.

Proprietà di scalabilità automatica

Consulta le proprietà di allocazione dinamica di Spark per un elenco delle proprietà Spark che puoi utilizzare per configurare la scalabilità automatica di Managed Service for Apache Spark.

Proprietà di logging

Proprietà Descrizione Predefinito Esempi
spark.log.level Se impostato, esegue l'override di tutte le impostazioni di log definite dall'utente con l'effetto di una chiamata a SparkContext.setLogLevel() all'avvio di Spark. I livelli di log validi includono: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE e WARN. INFO, DEBUG
spark.executor.syncLogLevel.enabled Se impostato su true, il livello di log applicato tramite il metodo SparkContext.setLogLevel() viene propagato a tutti gli esecutori. false true, false
spark.log.level.PackageName Se impostato, esegue l'override di qualsiasi impostazione di log definita dall'utente con l'effetto di una chiamata a SparkContext.setLogLevel(PackageName, level) all'avvio di Spark. I livelli di log validi includono: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE e WARN. spark.log.level.org.apache.spark=error

Proprietà di pianificazione

Proprietà Descrizione Predefinito Esempi
spark.scheduler.excludeShuffleSkewExecutors Escludi gli esecutori con skew della mappa di shuffling durante la pianificazione, il che può ridurre i tempi di attesa lunghi per il recupero dello shuffling causati dallo skew della scrittura dello shuffling. false true
spark.scheduler.shuffleSkew.minFinishedTasks Numero minimo di attività di mappatura di shuffling completate su un esecutore da considerare come asimmetria. 10 100
spark.scheduler.shuffleSkew.maxExecutorsNumber Numero massimo di esecutori da considerare come asimmetrici. Gli esecutori con asimmetria vengono esclusi dalla fase di pianificazione corrente. 5 10
spark.scheduler.shuffleSkew.maxExecutorsRatio Rapporto massimo tra gli esecutori totali da considerare come asimmetria. Gli esecutori asimmetrici sono esclusi dalla pianificazione. 0,05 0.1
spark.scheduler.shuffleSkew.ratio Un multiplo delle attività di mappatura di shuffle completate medie su un esecutore da trattare come asimmetria. 1,5 2.0

Altre proprietà

Proprietà Descrizione
dataproc.diagnostics.enabled **Supportato solo nei runtime 2.3 e precedenti**. Attiva questa proprietà per eseguire la diagnostica in caso di errore o annullamento di un workload batch. Se la diagnostica è abilitata, il workload batch continua a utilizzare le risorse di computing dopo il completamento del workload fino al termine della diagnostica. Un URI che rimanda alla posizione del file tar di diagnostica è elencato nel campo dell'API Batch.RuntimeInfo.diagnosticOutputUri.
dataproc.gcsConnector.version **Supportato solo nei runtime 2.3 e precedenti**. Utilizza questa proprietà per eseguire l'upgrade a una versione del connettore Cloud Storage diversa dalla versione installata con la versione di runtime del workload batch.
dataproc.sparkBqConnector.version **Supportato solo nei runtime 2.3 e precedenti**. Utilizza questa proprietà per eseguire l'upgrade a una versione del connettore Spark BigQuery diversa dalla versione installata con la versione di runtime del workload batch (consulta Utilizza il connettore BigQuery con Managed Service for Apache Spark).
dataproc.profiling.enabled **Supportato solo nei runtime 2.3 e precedenti**. Imposta questa proprietà su true per attivare la profilazione per il workload di Managed Service for Apache Spark.
dataproc.profiling.name **Supportata solo nei runtime 2.3 e precedenti** Utilizza questa proprietà per impostare il nome utilizzato per creare un profilo nel servizio Profiler.
spark.jars Utilizza questa proprietà per impostare l'elenco separato da virgole di file jar da includere nei classpath del driver e dell'esecutore
spark.archives Utilizza questa proprietà per impostare l'elenco separato da virgole degli archivi da estrarre nella directory di lavoro di ciascun esecutore. Sono supportati i formati .jar, .tar.gz, .tgz e .zip. Per le sessioni interattive serverless, aggiungi questa proprietà durante la creazione di una sessione interattiva o di un profilo di runtime (modello di sessione).
dataproc.artifacts.remove Utilizza questa proprietà per rimuovere gli artefatti predefiniti installati sui runtime di Managed Service for Apache Spark. Gli artefatti supportati sono conscrypt, delta-lake, iceberg, rapids e spark-bigquery-connector.