Proprietà Spark

Dataproc Serverless usa le proprietà Spark per determinare le risorse di calcolo, memoria e disco da allocare al tuo carico di lavoro batch. Queste impostazioni delle proprietà possono influire sul consumo e sui costi della quota dei carichi di lavoro (per ulteriori informazioni, consulta Quote di Dataproc Serverless e Prezzi di Dataproc Serverless).

Imposta le proprietà del carico di lavoro batch Spark

Puoi specificare le proprietà Spark quando invii un carico di lavoro batch Spark serverless Dataproc utilizzando la console Google Cloud, gcloud CLI o l'API Dataproc.

Console

  1. Vai alla pagina Crea batch di Dataproc nella console Google Cloud.

  2. Nella sezione Proprietà, fai clic su Aggiungi proprietà, poi inserisci Key (nome) e Value di una proprietà Spark supportata.

gcloud

Esempio di invio batch 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 come parte 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 shuffling, come spark.master=yarn e spark.shuffle.service.enabled. Se il codice dell'applicazione Spark imposta una proprietà YARN o shuffle, l'applicazione avrà esito negativo.

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 di ambiente.

Proprietà di allocazione delle risorse

Dataproc Serverless per Spark supporta le seguenti proprietà Spark per la configurazione dell'allocazione delle risorse:

Proprietà Descrizione Valore 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 dell'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 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 di memoria JVM con un suffisso dell'unità di dimensione ("m", "g" o "t").

Si tratta di memoria non heap associata a overhead JVM, stringhe interne e 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 correlati al 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 carichi di lavoro batch di PySpark, che per impostazione predefinita corrispondono al 40% della memoria del driver 512m, 2g
spark.dataproc.driver.compute.tier 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 superiore. standard standard, premium
spark.dataproc.driver.disk.size La quantità di spazio su disco assegnata 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 375 g, 750 g, 1500 g, 3000 g, 6000 g o 9000 g. 100GiB per core 1024g, 2t
spark.dataproc.driver.disk.tier Il livello di disco da utilizzare per l'archiviazione locale e in ordine casuale sul driver. Il livello Premium del disco offre prestazioni migliori in termini di IOPS e velocità effettiva, ma viene fatturato a una tariffa superiore. Se sul driver viene selezionato il livello disco Premium, è necessario selezionare anche il livello di computing 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 disco Premium, il driver alloca altri 50 GiB 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 ciascun esecutore Spark. Valori validi: 4, 8, 16. 4
spark.executor.memory

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

La memoria totale degli esecutori per core di 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 della stringa di memoria JVM con un suffisso dell'unità di dimensione ("m", "g" o "t").

Si tratta di memoria non heap utilizzata per l'overhead di JVM, le stringhe interne e altri overhead nativi e include la memoria degli esecutori PySpark e la memoria utilizzata da altri processi diversi da 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 degli esecutori per core di 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 degli esecutori, ad eccezione dei carichi di lavoro batch di PySpark, che per impostazione predefinita corrispondono al 40% della memoria degli esecutori 512m, 2g
spark.dataproc.executor.compute.tier 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 superiore. 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 dimensione ("k", "m", "g" o "t"). Lo spazio su disco dell'esecutore può essere utilizzato per lo shuffling dei dati e per l'archiviazione temporanea delle dipendenze. Deve essere almeno 250GiB. Se sull'esecutore è selezionato il livello di disco Premium, le dimensioni valide sono 375 g, 750 g, 1500 g, 3000 g, 6000 g o 9000 g. 100GiB per core 1024g, 2t
spark.dataproc.executor.disk.tier Il livello di disco da utilizzare per l'archiviazione locale e in shuffling sugli esecutori. Il livello Premium del disco offre prestazioni migliori in termini di IOPS e velocità effettiva, ma viene fatturato a una tariffa superiore. Se viene selezionato il livello disco Premium sull'esecutore, è necessario selezionare anche il livello di computing 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 viene selezionato il livello disco Premium, a ogni esecutore vengono allocati altri 50 GiB di spazio su disco per l'archiviazione di sistema, 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, la scalabilità automatica potrebbe modificare il numero di esecutori attivi. Deve essere almeno 2 e non più di 2000.

Proprietà di scalabilità automatica

Consulta Proprietà di allocazione dinamica di Spark per un elenco di proprietà Spark che puoi utilizzare per configurare la scalabilità automatica serverless di Dataproc.

Altre proprietà

Proprietà Descrizione
dataproc.diagnostics.enabled Abilita questa proprietà per eseguire la diagnostica su un errore o un annullamento di un carico di lavoro batch. Se la diagnostica è abilitata, il carico di lavoro batch continuerà a utilizzare le risorse di calcolo al termine del carico di lavoro fino al termine della diagnostica. Nel campo dell'API Batch.RuntimeInfo.diagnosticOutputUri è elencato un URI che rimanda alla posizione del tarball di diagnostica.
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 BigQuery Spark diversa da quella installata con la versione di runtime del carico di lavoro batch (consulta Utilizzare il connettore BigQuery con Dataproc Serverless per Spark).