2014-10-02 12 views
9

Come è possibile configurare da Java (o Scala) quantità di esecutori con SparkConfig e SparkContext? Vedo costantemente 2 esecutori. Sembra che spark.default.parallelism non funzioni e riguardi qualcosa di diverso.Come impostare la quantità di esecutori Spark?

Ho solo bisogno di impostare la quantità di esecutori per essere uguale alla dimensione del cluster, ma ci sono sempre solo 2 di loro. Conosco la mia dimensione del cluster. Corro su YARN se questo è importante.

risposta

16

OK, capito. Il numero di esecutori non è in realtà la proprietà Spark ma piuttosto il driver utilizzato per inserire un lavoro su YARN. Così come sto usando SparkSubmit class come driver e ha il parametro --num-executors appropriato che è esattamente quello di cui ho bisogno.

UPDATE:

Per alcuni lavori non seguo più SparkSubmit approccio. Non posso farlo principalmente per le applicazioni in cui il lavoro Spark è solo uno dei componenti dell'applicazione (ed è persino opzionale). Per questi casi, utilizzo spark-defaults.conf collegato alla configurazione del cluster e alla proprietà spark.executor.instances al suo interno. Questo approccio è molto più universale che mi permette di bilanciare le risorse correttamente a seconda del cluster (workstation sviluppatore, messa in scena, produzione).

+0

La struttura spark.default.parallelism è per il ridurre operazioni quali aderire, reduceByKey, groupBy. – Rags

5

Si potrebbe anche fare a livello di codice impostando i parametri "spark.executor.instances" e "spark.executor.cores" sull'oggetto SparkConf.

Esempio:

SparkConf conf = new SparkConf() 
     // 4 workers 
     .set("spark.executor.instances", "4") 
     // 5 cores on each workers 
     .set("spark.executor.cores", "5"); 

Il secondo parametro è solo per filati e modalità autonoma. Esso consente a un'applicazione di eseguire più esecutori sullo stesso lavoratore, a condizione che ci sono abbastanza core su quel lavoratore.

Problemi correlati