Qual è la differenza tra Driver e Application manager in spark
Non sono riuscito a capire qual è la differenza tra il driver Spark e il master dell'applicazione. Fondamentalmente le responsabilità nell'esecuzione di un'applicazione, chi fa cosa?
In modalità client, la macchina client ha il driver e il master dell'app viene eseguito in uno dei nodi del cluster. In modalità cluster, il client non ne dispone, il driver e il master dell'app vengono eseguiti nello stesso nodo (uno dei nodi del cluster).
Quali sono esattamente le operazioni che fanno il driver e il master dell'app?
Riferimenti:
- Memoria Spark Driver e memoria Application Master
- Cluster di filati Spark vs cliente: come scegliere quale usare?
Risposte
Come da documentazione della scintilla
Spark Driver:
Il driver (noto anche come programma driver) è responsabile della conversione di un'applicazione utente in unità di esecuzione più piccole chiamate attività e quindi le pianifica per l'esecuzione con un gestore cluster sugli esecutori . Il driver è anche responsabile dell'esecuzione dell'applicazione Spark e della restituzione dello stato / risultati all'uso r.
Spark Driver contiene vari componenti: DAGScheduler, TaskScheduler, BackendScheduler e BlockManager . Sono responsabili della traduzione del codice utente in lavori Spark effettivi eseguiti sul cluster.
Dove si trova in Application Master
L'Application Master è responsabile dell'esecuzione di una singola domanda. Richiede contenitori dal Resource Scheduler (Resource Manager) ed esegue programmi specifici sui contenitori ottenuti. Application Master è solo un broker che negozia le risorse con Resource Manager e quindi, dopo aver ottenuto un contenitore, si assicura di avviare le attività (che vengono prelevate dalla coda dello scheduler) sui contenitori.
In poche parole, il programma Driver tradurrà la tua logica personalizzata in fasi, lavoro e attività .. e il master dell'applicazione si assicurerà di ottenere risorse sufficienti da RM e si assicurerà anche di controllare lo stato delle tue attività in esecuzione in un contenitore.
come è già stato detto nei riferimenti forniti, l'unica differenza tra la modalità client e cluster è
Nel client, il driver in modalità verrà eseguito sulla macchina in cui abbiamo eseguito / eseguito spark application / job e AM viene eseguito in uno dei nodi del cluster.
(E)
Nel driver in modalità cluster eseguito all'interno del master dell'applicazione, significa che l'applicazione ha molte più responsabilità.
Riferimenti :
https://luminousmen.com/post/spark-anatomy-of-spark-application#:~:text=The%20Driver(aka%20driver%20program,status%2Fresults%20to%20the%20user.
https://www.edureka.co/community/1043/difference-between-application-master-application-manager#:~:text=The%20Application%20Master%20is%20responsible,class)% 20su% 20i% 20 ha ottenuto% 20container.