2016-05-14 9 views
5

Mi piacerebbe capire l'interno della modalità di pianificazione FAIR di Spark. La cosa è che sembra non così bella come ci si aspetterebbe in base alla official Spark documentation:Come abilitare lo scheduler di Fair in Spark?

A partire dal Spark 0.8, è anche possibile configurare un'equa ripartizione tra i posti di lavoro. In base a una condivisione equa, Spark assegna le attività tra i lavori in modalità "round robin", in modo che tutti i lavori ricevano una quota approssimativamente uguale delle risorse del cluster. Ciò significa che i lavori brevi inviati durante l'esecuzione di un lungo lavoro possono iniziare a ricevere risorse immediatamente e ottenere comunque buoni tempi di risposta, senza attendere il completamento del lavoro lungo. Questa modalità è la migliore per le impostazioni multiutente.

Sembra che i lavori non siano gestiti allo stesso modo e gestiti effettivamente in quindici ordini.

per dare più informazioni sul tema:

Sto usando scintilla sul filato. Io uso l'API Java di Spark. Per abilitare la modalità fiera, Il codice è:

SparkConf conf = new SparkConf(); 
conf.set("spark.scheduler.mode", "FAIR"); 
conf.setMaster("yarn-client").setAppName("MySparkApp"); 
JavaSparkContext sc = new JavaSparkContext(conf); 

Mi sono perso qualcosa?

risposta

4

E Sembra che non hai impostato le piscine e tutti i vostri lavori a finire in un unico default piscina come descritto in Configuring Pool Properties: proprietà

piscine specifiche possono anche essere modificate attraverso una configurazione file.

e successivamente

Un esempio completo è disponibile in conf/fairscheduler.xml.template anche. Si noti che qualsiasi pool non configurato nel file XML otterrà semplicemente i valori predefiniti per tutte le impostazioni (modalità di pianificazione FIFO, peso 1 e minShare 0).

Può anche essere che non è stato impostato il locale di proprietà per impostare il pool da utilizzare per un determinato lavoro (s) come descritto nella Fair Scheduler Pools:

Senza alcun intervento , i lavori inviati di recente entrano in un pool predefinito, ma i pool di lavori possono essere impostati aggiungendo spark.scheduler.pool "proprietà locale" a SparkContext nel thread che li invia.

Può infine significare che si utilizza un singolo pool FIFO default in modo che un pool in modalità FIFO non cambi nulla rispetto a FIFO senza pool.

E 'solo che tu sappia la vera risposta :)

+0

In posti di lavoro di default piscina eseguito in parallelo, se sono presentate attraverso diversi thread, ho visto che corre parallela. Non pensiamo che abbiamo bisogno di creare pool per la semplice parallelizzazione dei lavori. "ogni pool ottiene una quota uguale del cluster (uguale anche in condivisione a ciascun lavoro nel pool predefinito)" da http://spark.apache.org/docs/latest/job-scheduling.html#default-behavior-of -pools – spats

+0

Questo è corretto se # CPU> # attività da stadi non correlati. –

Problemi correlati