Questo documento descrive le proprietà Spark e come impostarle. Serverless per Apache Spark utilizza le proprietà Spark per determinare le risorse di calcolo, memoria e disco da allocare al workload batch. Queste impostazioni delle proprietà possono influire sul consumo della quota e sul costo del workload. Per ulteriori informazioni, consulta Quote di Serverless per Apache Spark e Prezzi di Serverless per Apache Spark.
Impostare le proprietà del workload batch Spark
Puoi specificare le proprietà Spark quando invii un workload batch Spark di Serverless per Apache Spark utilizzando la Google Cloud console, l'interfaccia a riga di comando gcloud o l'API Dataproc.
Console
Nella Google Cloud console, vai alla pagina Dataproc create batch.
Nella sezione Proprietà, fai clic su Aggiungi proprietà.
Inserisci la
Key(nome) e ilValuedi una proprietà Spark supportata.
gcloud
Esempio di invio di batch dell'interfaccia a riga di comando gcloud:
gcloud dataproc batches submit spark --properties=spark.checkpoint.compress=true \ --region=region \ other args ...
API
Imposta RuntimeConfig.properties con le proprietà Spark supportate come parte di una batches.create.
Proprietà Spark supportate
Serverless per Apache Spark supporta la maggior parte delle proprietà Spark, ma non supporta le proprietà Spark correlate a YARN e shuffle, come spark.master=yarn e spark.shuffle.service.enabled. Se il codice dell'applicazione Spark
imposta una proprietà YARN o shuffle, l'applicazione non verrà eseguita.
Proprietà dell'ambiente di runtime
Serverless per 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 (vedi Google Cloud Livelli di Serverless per Apache Spark). Le sessioni interattive
vengono sempre eseguite al livello premium dataproc.tier.
|
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.
|
|
spark.dataproc.lightningEngine.runtime |
Il runtime da utilizzare quando Lightning Engine è selezionato per un workload batch o una sessione interattiva: default o native (esecuzione di query native).
|
default |
Proprietà di allocazione delle risorse
Serverless per 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 della stringa di memoria JVM con un suffisso di unità di dimensione ("m", "g" o "t"). La memoria totale del driver per core del driver, incluso l'overhead della memoria del driver,
che deve essere compresa tra |
512m, 2g |
|
spark.driver.memoryOverhead |
La quantità di memoria JVM aggiuntiva da allocare al processo del driver Spark, specificata nel formato della stringa di memoria JVM con un suffisso di unità di dimensione ("m", "g" o "t"). Si tratta di memoria non heap associata agli overhead JVM,
stringhe interne e ad altri overhead nativi e include
la memoria utilizzata da altri processi del driver, come i processi del 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 La memoria totale del driver per core del driver, incluso l'overhead della memoria del driver,
deve essere compresa tra |
10% della memoria del driver, ad eccezione dei workload batch PySpark, che per impostazione predefinita sono il 40% della memoria del driver | 512m, 2g |
spark.dataproc.driver.compute.tier |
Il livello di calcolo da utilizzare sul driver. Il livello di calcolo Premium offre prestazioni per core più elevate, ma viene fatturato a una tariffa più alta. | standard | standard, premium |
spark.dataproc.driver.disk.size |
La quantità di spazio su disco allocato al driver,
specificata con un suffisso di unità di dimensione ("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 sono selezionati il livello di disco Premium
e 16 core del driver,
la dimensione minima del disco è 750g. |
100GiB per core |
1024g, 2t |
spark.dataproc.driver.disk.tier |
Il livello di disco da utilizzare per l'archiviazione locale e shuffle sul driver.
Il livello di disco Premium offre prestazioni migliori in termini di IOPS e velocità effettiva, ma
viene fatturato a una tariffa più alta. Se sul driver è selezionato il livello di disco Premium, deve essere selezionato anche il livello di calcolo Premium utilizzando spark.dataproc.driver.compute.tier=premium, e la quantità di spazio su disco deve essere specificata utilizzando spark.dataproc.executor.disk.size.
Se è selezionato il livello di disco Premium, il driver alloca 50 GiB di spazio su disco aggiuntivo per l'archiviazione di sistema, che non è utilizzabile dalle applicazioni utente. |
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 dell'esecutore Spark, specificata nel formato della 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 |
512m, 2g |
|
spark.executor.memoryOverhead |
La quantità di memoria JVM aggiuntiva da allocare al processo dell'esecutore Spark specificata nel formato della stringa di memoria JVM con un suffisso di unità di dimensione ("m", "g" o "t"). Si tratta di memoria non heap utilizzata per gli overhead JVM, le stringhe interne,
e altri overhead nativi e 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 La memoria totale dell'esecutore per core dell'esecutore, incluso l'overhead della memoria dell'esecutore, deve essere compresa tra |
10% della memoria dell'esecutore, ad eccezione dei workload batch PySpark, che per impostazione predefinita sono il 40% della memoria dell'esecutore | 512m, 2g |
spark.dataproc.executor.compute.tier |
Il livello di calcolo da utilizzare sugli esecutori. Il livello di calcolo Premium offre prestazioni per core più elevate, ma viene fatturato a una tariffa più alta. | standard | standard, premium |
spark.dataproc.executor.disk.size |
La quantità di spazio su disco allocato a ogni esecutore,
specificata con un suffisso di unità di dimensione ("k", "m", "g" o "t").
Lo spazio su disco dell'esecutore può essere utilizzato per i dati shuffle e per preparare
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 sono selezionati il livello di disco Premium
e 16 core dell'esecutore,
la dimensione minima del disco è 750g. |
100GiB per core |
1024g, 2t |
spark.dataproc.executor.disk.tier |
Il livello di disco da utilizzare per l'archiviazione locale e shuffle sugli esecutori.
Il livello di disco Premium offre prestazioni migliori in termini di IOPS e velocità effettiva, ma
viene fatturato a una tariffa più alta. Se sull'esecutore è selezionato il livello di disco Premium, deve essere selezionato anche il livello di calcolo Premium utilizzando spark.dataproc.executor.compute.tier=premium, e la quantità di spazio su disco deve essere specificata utilizzando spark.dataproc.executor.disk.size.
Se è selezionato il livello di disco Premium, a ogni esecutore vengono allocati 50 GiB di spazio su disco aggiuntivo per l'archiviazione di sistema, che non è utilizzabile dalle applicazioni utente. |
standard | standard, premium |
spark.executor.instances |
Il numero iniziale di esecutori da allocare. Dopo l'avvio di un workload batch
la scalabilità automatica può modificare il numero di esecutori attivi. Deve essere
almeno 2 e al massimo 2000. |
Proprietà di scalabilità automatica
Per un elenco delle proprietà Spark che puoi utilizzare per configurare la scalabilità automatica di Serverless per Apache Spark, consulta Proprietà di allocazione dinamica di Spark.
Proprietà di logging
| Proprietà | Descrizione | Predefinito | Esempi |
|---|---|---|---|
spark.log.level |
Se impostato, sostituisce tutte le impostazioni dei 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, sostituisce tutte le impostazioni dei log definite 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 distorsione della mappa shuffle durante la pianificazione, il che può ridurre lunghi tempi di attesa per il recupero shuffle causati dalla distorsione della scrittura shuffle. | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
Numero minimo di attività di mappa shuffle completate su un esecutore da trattare come distorsione. | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
Numero massimo di esecutori da trattare come distorsione. Gli esecutori con distorsione vengono esclusi dal round di pianificazione corrente. | 5 | 10 |
spark.scheduler.shuffleSkew.maxExecutorsRatio |
Rapporto massimo di esecutori totali da trattare come distorsione. Gli esecutori con distorsione vengono esclusi dalla pianificazione. | 0.05 | 0.1 |
spark.scheduler.shuffleSkew.ratio |
Un multiplo delle attività di mappa shuffle completate in media su un esecutore da trattare come distorsione. | 1.5 | 2.0 |
Altre proprietà
| Proprietà | Descrizione |
|---|---|
dataproc.diagnostics.enabled |
Abilita 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 calcolo dopo il completamento del workload fino al termine della diagnostica. Un URI che rimanda alla posizione del file tar di diagnostica è elencato nel Batch.RuntimeInfo.diagnosticOutputUri. |
dataproc.gcsConnector.version |
Utilizza questa proprietà per eseguire l'upgrade a una versione del connettore Cloud Storage diversa da quella installata con la versione del runtime del workload batch. runtime version. |
dataproc.sparkBqConnector.version |
Utilizza questa proprietà per eseguire l'upgrade a una versione del connettore Spark BigQuery diversa da quella installata con la versione del runtime del workload batch (vedi Utilizzare il connettore BigQuery con Serverless per Apache Spark). |
dataproc.profiling.enabled |
Imposta questa proprietà su true per abilitare la profilazione per il
workload Serverless per Apache Spark. |
dataproc.profiling.name |
Utilizza questa proprietà per impostare il nome utilizzato per creare un profilo nel servizio Profiler. |
spark.jars |
Utilizza questa proprietà per impostare l'elenco di jar separati da virgole da includere nei classpath del driver e dell'esecutore. |
spark.archives |
Utilizza questa proprietà per impostare l'elenco di archivi separati da virgole da estrarre nella directory di lavoro di ogni esecutore. Sono supportati i formati .jar, .tar.gz, .tgz e .zip. Per le sessioni interattive serverless, aggiungi questa proprietà quando crei una sessione/un modello interattivo. |
dataproc.artifacts.remove |
Utilizza questa proprietà per rimuovere gli artefatti predefiniti installati su
runtime di Serverless per Apache Spark.
Gli artefatti supportati sono spark-bigquery-connector,
iceberg, e delta-lake. |