Che cosa sono i lavoratori, gli esecutori, i core nel cluster Spark Standalone?

Ho letto Panoramica sulla modalità Cluster e non riesco ancora a comprendere i diversi processi nel cluster Spark Standalone e nel parallelismo.

Il lavoratore è un processo JVM o no? Ho eseguito il bin\start-slave.sh e bin\start-slave.sh scoperto che ha generato il worker, che in realtà è una JVM.

Come per il collegamento precedente, un executor è un processo avviato per un’applicazione su un nodo di lavoro che esegue attività. Executor è anche una JVM.

Queste sono le mie domande:

  1. Gli esecutori sono per applicazione. Allora, qual è il ruolo di un lavoratore? Coordina l’esecutore e comunica il risultato all’autista? o l’autista parla direttamente con l’esecutore? In tal caso, qual è lo scopo del lavoratore?

    • Come controllare il numero di esecutori per un’applicazione? 3.È ansible eseguire le attività in parallelo all’interno dell’esecutore? In tal caso, come configurare il numero di thread per un executor?

    • Qual è la relazione tra worker, executors ed executor core (–total-executor-core)?

    • cosa significa avere più lavoratori per nodo?

    aggiornato

    Diamo esempi per capire meglio.

    Esempio 1: un cluster autonomo con 5 nodes di lavoro (ogni nodo con 8 core) Quando avvio un’applicazione con le impostazioni predefinite.

    Esempio 2 Stessa configurazione cluster come nell’esempio 1, ma eseguo un’applicazione con le seguenti impostazioni –executor-core 10 –total-executor-core 10.

    Esempio 3 Stessa configurazione cluster come nell’esempio 1, ma eseguo un’applicazione con le seguenti impostazioni –executor-core 10 –total-executor-core 50.

    Esempio 4 Stessa configurazione cluster come nell’esempio 1, ma eseguo un’applicazione con le seguenti impostazioni –executor-core 50 –total-executor-core 50.

    Esempio 5 Stessa configurazione cluster come nell’esempio 1, ma eseguo un’applicazione con le seguenti impostazioni –executor-core 50 –total-executor-core 10.

    In ognuno di questi esempi, quanti esecutori? Quanti thread per esecutore? Quanti nuclei? Come viene deciso il numero di esecutori per applicazione. È sempre uguale al numero di lavoratori?