Questo documento descrive le proprietà Spark e come impostarle. Dataproc Serverless utilizza le proprietà Spark per determinare le risorse di calcolo, memoria e disco da allocare al carico di lavoro batch. Queste impostazioni della proprietà possono influire sul consumo e sul costo della quota del carico di lavoro. Per maggiori informazioni, consulta Quote di Dataproc Serverless e Prezzi di Dataproc Serverless.
Impostare le proprietà del carico di lavoro batch di Spark
Puoi specificare le proprietà Spark quando invii un carico di lavoro batch Spark Dataproc Serverless utilizzando la console Google Cloud, gcloud CLI o l'API Dataproc.
Console
Nella console Google Cloud, vai alla pagina Crea batch Dataproc.
Nella sezione Proprietà, fai clic su Aggiungi proprietà.
Inserisci
Key
(nome) eValue
di una proprietà Spark supportata.
gcloud
Esempio di invio collettivo con l'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 nell'ambito di una richiesta batches.create.
Proprietà Spark supportate
Dataproc Serverless per Spark supporta la maggior parte delle proprietà Spark, ma non supporta le proprietà Spark correlate a YARN e allo shuffle, come spark.master=yarn
e spark.shuffle.service.enabled
. Se il codice dell'applicazione Spark imposta una proprietà YARN o di mescolamento, l'applicazione non riuscirà.
Proprietà dell'ambiente di runtime
Dataproc Serverless per Spark supporta le seguenti proprietà Spark personalizzate per la configurazione dell'ambiente di runtime:
Proprietà | Descrizione |
---|---|
spark.dataproc.driverEnv.EnvironmentVariableName |
Aggiungi EnvironmentVariableName al processo del driver. Puoi specificare più variabili d'ambiente. |
Proprietà di allocazione delle risorse
Dataproc Serverless per Spark supporta le seguenti proprietà Spark per configurare l'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 misura ("m", "g" o "t"). Memoria totale del driver per core del driver, incluso il sovraccarico 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 in formato di stringa di memoria JVM con un suffisso di unità di misura ("m", "g" o "t"). Si tratta di memoria non heap associata a sovraccarichi 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 del driver in esecuzione nel contenitore.
La dimensione massima della memoria del contenitore in cui viene eseguito il driver è
determinata dalla somma di La memoria totale del driver per core del driver, incluso il sovraccarico della memoria del driver, deve essere compresa tra |
10% della memoria del driver, ad eccezione dei carichi di lavoro batch PySpark, per i quali il valore predefinito è 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 allocata al driver,
specificata con un suffisso di unità di misura ("k", "m", "g" o "t").
Deve essere almeno 250GiB .
Se nel driver è selezionato il livello Premium del disco, le dimensioni valide sono
375 g, 750 g, 1500 g, 3000 g, 6000 g o 9000 g. Se sono selezionati il livello Premium del disco 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 lo spazio di 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 nel 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 altri 50 GB di spazio su disco per lo spazio di 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 ciascun processo di executor Spark, specificata nel formato di stringa di memoria JVM con un suffisso di unità di misura ("m", "g" o "t"). La memoria totale dell'executor per core dell'executor, incluso il sovraccarico 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 di stringa della memoria JVM con un suffisso di unità di misura della dimensione ("m", "g" o "t"). Si tratta di memoria non heap utilizzata per gli overhead della JVM, le stringhe interne e altri overhead nativi e include la memoria dell'executor PySpark e la memoria utilizzata da altri processi non executor in esecuzione nel contenitore.
La dimensione massima della memoria del contenitore in cui viene eseguito l'eseguitore è
determinata dalla somma di La memoria totale dell'executor per core dell'executor, incluso il sovraccarico della memoria dell'executor, deve essere compresa tra |
10% della memoria dell'executor, ad eccezione dei carichi di lavoro batch PySpark, per i quali il valore predefinito è il 40% della memoria dell'executor | 512m , 2g |
spark.dataproc.executor.compute.tier |
Il livello di calcolo da utilizzare negli 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 allocata a ogni executor,
specificata con un suffisso di unità di misura della dimensione ("k", "m", "g" o "t").
Lo spazio su disco dell'eseguibile può essere utilizzato per mescolare i dati e per eseguire il staging delle dipendenze. Deve essere almeno 250GiB .
Se nell'eseguibile è selezionato il livello Premium del disco, le dimensioni valide sono
375 g, 750 g, 1500 g, 3000 g, 6000 g o 9000 g. Se sono selezionati il livello di disco Premium e 16 core dell'executor, la dimensione minima del disco è 750 GB. |
100GiB per core |
1024g , 2t |
spark.dataproc.executor.disk.tier |
Il livello di disco da utilizzare per lo spazio di archiviazione locale e per l'ordinamento casuale negli esecutori.
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 di disco Premium è selezionato nell'esecutore, 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 utente viene allocato un ulteriore spazio su disco di 50 GB per lo spazio di 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, l'autoscaling potrebbe modificare il numero di esecutori 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 Dataproc Serverless.
Proprietà di logging
Proprietà | Descrizione | Predefinito | Esempi |
---|---|---|---|
spark.log.level |
Se impostato, sostituisce 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, sostituisce tutte le impostazioni di 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 mappatura casuale distorta durante la pianificazione, in modo da ridurre i lunghi tempi di attesa di recupero casuale causati dallo squilibrio di scrittura casuale. | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
Numero minimo di attività di mappatura casuale completate su un executor da trattare come uno squilibrio. | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
Numero massimo di esecutori da trattare come skew. Gli esecutori con dati distorti sono esclusi dal turno di pianificazione corrente. | 5 | 10 |
spark.scheduler.shuffleSkew.maxExecutorsRatio |
Il rapporto massimo di esecutori totali da trattare come sbilanciamento. Gli esecutori distorti sono esclusi dalla pianificazione. | 0,05 | 0.1 |
spark.scheduler.shuffleSkew.ratio |
Un multiplo delle attività di mappatura casuale completate medie su un executor da trattare come uno scostamento. | 1,5 | 2.0 |
Altre proprietà
Proprietà | Descrizione |
---|---|
dataproc.diagnostics.enabled |
Attiva questa proprietà per eseguire la diagnostica in caso di annullamento o errore di un carico di lavoro batch. Se la diagnostica è attiva, il tuo carico di lavoro batch continua a utilizzare risorse di calcolo al termine del carico di lavoro fino al termine della diagnostica. Un URI che rimanda alla posizione del file tarball di diagnostica è elencato nel campo dell'API Batch.RuntimeInfo.diagnosticOutputUri. |
dataproc.gcsConnector.version |
Utilizza questa proprietà per eseguire l'upgrade a una versione del connettore Cloud Storage distinta da quella installata con la versione di runtime del tuo carico di lavoro batch. |
dataproc.sparkBqConnector.version |
Utilizza questa proprietà per eseguire l'upgrade a una versione del connettore BigQuery di Spark diversa dalla versione installata con la versione di runtime del tuo workload batch (consulta Utilizzare il connettore BigQuery con Dataproc Serverless per Spark). |
dataproc.profiling.enabled |
Imposta questa proprietà su true per attivare il profiling per il
carico di lavoro Dataproc Serverless. |
dataproc.profiling.name |
Utilizza questa proprietà per impostare il nome utilizzato per creare un profilo nel servizio Profiler. |