Per quanto riguarda Come il contesto spark legge il codice utente e lo converte in attività?
Il codice del driver genera lavoro, fasi e attività.
L'intero codice del driver può essere chiamato come un'unica applicazione e ogni azione costituisce un lavoro.
Quando un lavoro viene inviato al conducente, il lavoro viene diviso in piano logico e piano fisico.
Durante il piano logico le trasformazioni() creano il calcolo di una serie di RDD. Poiché ogni azione() attiva un lavoro, durante il piano fisico il grafico completo delle dipendenze delle trasformazioni viene diviso in fasi. A differenza di hadoop, in cui il processo di esecuzione è fisso map-shuffle-sort-aggregate, spark non ha un processo di esecuzione fisso. I dati vengono calcolati quando sono effettivamente necessari in modalità flusso. Parte dal risultato finale di RDD e controlla indietro la catena RDD per trovare quali RDD e parititoni sono necessari per calcolare il risultato finale. Durante il backtracking, se incontra ShuffleDependency, taglia il flusso di dati e forma una nuova fase lasciando le chaing di RDD di NarrowDepedency. Quindi è ShuffleDependency che esplode per una nuova fase.
All'interno di ogni fase le attività vengono eseguite e i dati vengono pipeline attraverso le trasformazioni. Il numero di attività è equivalente al numero del numero di partizioni negli RDD di ogni fase.
Tutte le attività sono impacchettate in TaskSet e inviate a TaskScheduler. L'attore Driver invia le attività serializzate a CoarseGrainedExecutorBackend Actor sul nodo di lavoro. Alla ricezione, l'esecutore lo deserializza in un'attività normale e viene eseguito per ottenere il risultato. A TaskScheduler verrà notificato che l'attività è stata completata e il suo risultato sarà elaborato
Se l'attività ricevuta sul driver è l'ultima attività nello stage, verrà inviata la fase successiva. Se il palco è già l'ultimo, dagScheduler verrà informato che il lavoro è finito.
Dalla versione spark 1.4, è stata aggiunta una nuova visualizzazione nell'interfaccia utente di Spark. Dove possiamo vedere la visualizzazione DAG di diverse fasi.