Questo documento descrive le proprietà di Spark e come impostarle. Managed Service for Apache Spark utilizza le proprietà Spark per determinare le risorse di calcolo, memoria e disco da allocare al workload batch. Queste impostazioni della proprietà possono influire sul consumo e sul costo della quota del workload. Per maggiori informazioni, consulta Quote di Managed Service for Apache Spark e Prezzi di Managed Service for Apache Spark.
Imposta le proprietà del carico di lavoro batch Spark
Puoi specificare le proprietà di Spark quando invii un workload batch Managed Service for Apache Spark utilizzando la console Google Cloud , gcloud CLI o l'API Dataproc.
Console
Nella console Google Cloud , vai alla pagina Crea batch Managed Service for Apache Spark.
Nella sezione Proprietà, fai clic su Aggiungi proprietà.
Inserisci
Key(nome) eValuedi una proprietà Spark supportata.
gcloud
Di seguito è riportato un esempio di invio batch della 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 correlate a YARN e allo shuffle, ad esempio spark.master=yarn e spark.shuffle.service.enabled. Se il codice dell'applicazione Spark imposta una proprietà YARN o di rimescolamento, l'applicazione non riuscirà.
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 alla procedura del conducente. Puoi specificare più variabili di ambiente. |
spark.executorEnv.ENVIRONMENT_VARIABLE_NAME |
Aggiungi ENVIRONMENT_VARIABLE_NAME alla procedura di esecuzione. 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 Livelli di Managed Service for 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 carico di lavoro 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 nativa).
|
default |
Proprietà di allocazione delle risorse
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 di stringa di memoria JVM con un suffisso di unità di dimensione ("m", "g" o "t"). Memoria totale del driver per core del driver, incluso l'overhead della memoria del driver,
che deve essere compreso 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 ai sovraccarichi della JVM,
stringhe interne e altri sovraccarichi 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 carichi di lavoro batch PySpark, che per impostazione predefinita utilizzano il 40% della memoria del driver | 512m, 2g |
spark.dataproc.driver.compute.tier |
Il livello di computing da utilizzare sul driver. Il livello di calcolo Premium offre prestazioni per core più elevate, ma viene fatturato a una tariffa più elevata. | 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 Premium, le dimensioni valide sono
375 g, 750 g, 1500 g, 3000 g, 6000 g o 9000 g. Se sono selezionati il livello del disco Premium e 16 core del driver, la dimensione minima del disco è 750 g. |
100GiB per core |
1024g, 2t |
spark.dataproc.driver.disk.tier |
Il livello del disco da utilizzare per l'archiviazione locale e casuale 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 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 l'importo dello spazio su disco deve essere specificato utilizzando spark.dataproc.executor.disk.size.
Se è selezionato il livello del disco Premium, il driver alloca 50 GiB aggiuntivi di spazio su disco 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 executor Spark.
Valori validi: 4, 8, 16. |
4 |
|
spark.executor.memory |
La quantità di memoria da allocare a ogni processo di esecuzione di Spark, specificata nel formato di stringa di memoria JVM con un suffisso di unità di dimensione ("m", "g" o "t"). La memoria totale dell'executor per core dell'executor, incluso l'overhead della memoria dell'executor, deve essere compresa tra |
512m, 2g |
|
spark.executor.memoryOverhead |
La quantità di memoria JVM aggiuntiva da allocare al processo di esecuzione di 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 della JVM, le stringhe interne,
e altri overhead nativi. Include la memoria dell'executor PySpark e
la memoria utilizzata da altri processi non executor in esecuzione nel container.
La dimensione massima della memoria del contenitore in cui viene eseguito l'esecutore è
determinata dalla somma di La memoria totale dell'executor per core dell'executor, incluso l'overhead della memoria dell'executor, deve essere compresa tra |
10% della memoria dell'executor, ad eccezione dei carichi di lavoro batch PySpark, che per impostazione predefinita utilizzano il 40% della memoria dell'executor | 512m, 2g |
spark.dataproc.executor.compute.tier |
Il livello di computing da utilizzare sugli esecutori. Il livello di calcolo Premium offre prestazioni per core più elevate, ma viene fatturato a una tariffa più elevata. | standard | standard, premium |
spark.dataproc.executor.disk.size |
La quantità di spazio su disco allocato a ogni executor,
specificata con un suffisso di unità di dimensione ("k", "m", "g" o "t").
Lo spazio su disco dell'executor può essere utilizzato per i dati di shuffling e per preparare
le dipendenze. Deve essere almeno 250GiB.
Se è selezionato il livello del disco Premium sull'executor, le dimensioni valide sono
375 g, 750 g, 1500 g, 3000 g, 6000 g o 9000 g. Se sono selezionati
il livello disco Premium
e 16 core esecutore,
la dimensione minima del disco è 750 GB. |
100GiB per core |
1024g, 2t |
spark.dataproc.executor.disk.tier |
Il livello del disco da utilizzare per l'archiviazione locale e di rimescolamento sugli executor.
Il livello di disco Premium offre prestazioni migliori in termini di IOPS e throughput, ma
viene fatturato a una tariffa più elevata. Se il livello del disco Premium è selezionato nell'executor, anche il livello di calcolo Premium deve essere selezionato utilizzando spark.dataproc.executor.compute.tier=premium e la quantità di spazio su disco deve essere specificata utilizzando spark.dataproc.executor.disk.size.
Se viene selezionato il livello del disco Premium, a ogni executor vengono allocati 50 GiB aggiuntivi di spazio su disco 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 carico di lavoro batch, lo scaling automatico potrebbe modificare il numero di executor attivi. Deve essere
almeno 2 e al massimo 2000. |
Proprietà di scalabilità automatica
Consulta 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 qualsiasi impostazione di log definita 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 executor. |
false |
true, false |
spark.log.level.PackageName |
Se impostato, sostituisce 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 programmazione
| Proprietà | Descrizione | Predefinito | Esempi |
|---|---|---|---|
spark.scheduler.excludeShuffleSkewExecutors |
Escludi gli esecutori con mappa di rimescolamento distorta durante la pianificazione, il che può ridurre i lunghi tempi di attesa per il recupero del rimescolamento causati dalla distorsione della scrittura del rimescolamento. | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
Numero minimo di attività di mappatura casuale completate su un executor da considerare come distorsione. | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
Numero massimo di esecutori da considerare come asimmetria. Gli esecutori distorti sono esclusi dal round di pianificazione corrente. | 5 | 10 |
spark.scheduler.shuffleSkew.maxExecutorsRatio |
Il rapporto massimo tra il numero totale di esecutori da considerare come asimmetria. Gli esecutori distorti sono esclusi dalla pianificazione. | 0,05 | 0.1 |
spark.scheduler.shuffleSkew.ratio |
Un multiplo delle attività di shuffle completate medie su un executor da considerare come distorsione. | 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 carico di lavoro batch. Se la diagnostica è abilitata, il tuo workload batch continua a utilizzare 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 campo 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 da quella installata con la versione di runtime del tuo carico di lavoro 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 da quella installata con la versione del runtime del tuo workload batch (vedi Utilizzare 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 Managed Service for Apache Spark. |
dataproc.profiling.name |
**Supportato 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 dei file JAR da includere nei classpath del driver e dell'executor |
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à quando crei una sessione/un modello interattivo |
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. |