Proprietà Spark

Questo documento descrive le proprietà di Spark e come impostarle. Serverless per Apache Spark utilizza le proprietà Spark per determinare le risorse di calcolo, memoria e disco da allocare al tuo workload batch. Queste impostazioni della proprietà possono influire sul consumo e sul costo della quota del workload. Per maggiori informazioni, consulta Quote di Serverless per Apache Spark e Prezzi di Serverless per Apache Spark.

Imposta le proprietà del carico di lavoro batch Spark

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

Console

  1. Nella console Google Cloud , vai alla pagina Crea batch Dataproc.

    Vai a Crea batch Dataproc

  2. Nella sezione Proprietà, fai clic su Aggiungi proprietà.

  3. Inserisci Key (nome) e Value di una proprietà Spark supportata.

gcloud

Esempio di invio batch di gcloud CLI:

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

Serverless per 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 shuffle, l'applicazione non riuscirà.

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/var> to the executor process. You can specify multiple environment variables.

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").

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 calcolo Standard (24576m per il livello di calcolo 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 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 contenitore 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 calcolo Standard (24576m per il livello di calcolo 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 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 del disco 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 shuffle sul driver. Il livello del 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 sul driver, 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 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 executor Spark, specificata nel formato della 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 1024m e 7424m per il livello di calcolo Standard (24576m per il livello di calcolo 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 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, e 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 spark.executor.memoryOverhead più spark.executor.memory.

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

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 sul programma di esecuzione è selezionato il livello del disco Premium, le dimensioni valide sono 375 GB, 750 GB, 1500 GB, 3000 GB, 6000 GB o 9000 GB. Se sono selezionati il livello del disco Premium e 16 core di esecuzione, 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 shuffle sugli executor. Il livello del disco Premium offre prestazioni migliori in termini di IOPS e throughput, ma viene fatturato a una tariffa più elevata. Se è selezionato il livello di disco Premium sull'executor, deve essere selezionato anche il livello di calcolo Premium utilizzando spark.dataproc.executor.compute.tier=premium e deve essere specificata la quantità di spazio su disco utilizzando spark.dataproc.executor.disk.size.

Se è 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 può 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à di Spark che puoi utilizzare per configurare la scalabilità automatica di Serverless per 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 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 programmazione

Proprietà Descrizione Predefinito Esempi
spark.scheduler.excludeShuffleSkewExecutors Escludi gli esecutori con distorsione della mappa di shuffling durante la pianificazione, il che può ridurre i lunghi tempi di attesa per il recupero dello shuffling causati dalla distorsione della scrittura dello shuffling. false true
spark.scheduler.shuffleSkew.minFinishedTasks Numero minimo di attività di shuffle map 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 map completate in media su un executor da considerare come distorsione. 1,5 2.0

Altre proprietà

Proprietà Descrizione
dataproc.diagnostics.enabled 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 punta alla posizione del file tarball di diagnostica è elencato nel campo Batch.RuntimeInfo.diagnosticOutputUri dell'API.
dataproc.gcsConnector.version Utilizza questa proprietà per eseguire l'upgrade a una versione del connettore Cloud Storage diversa da quella installata con la versione di runtime del carico di lavoro batch.
dataproc.sparkBqConnector.version Utilizza questa proprietà per eseguire l'upgrade a una versione del connettore Spark BigQuery diversa da quella installata con la versione di runtime del workload batch (vedi Utilizzare il connettore BigQuery con Serverless per Apache Spark).
dataproc.profiling.enabled Imposta questa proprietà su true per attivare la profilazione per il carico di lavoro Serverless per Apache Spark.
dataproc.profiling.name Utilizza questa proprietà per impostare il nome utilizzato per creare un profilo sul 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