Suppongo di non aver ancora compreso appieno come funzioni Spark.Apache Spark: il driver (anziché solo gli Executor) tenta di connettersi a Cassandra
Qui è la mia messa a punto:
sto correndo un cluster Spark in modalità autonoma. Sto usando 4 macchine per questo: Uno è il Maestro, gli altri tre sono Lavoratori.
Ho scritto un'applicazione che legge i dati da un cluster Cassandra (vedere https://github.com/journeymonitor/analyze/blob/master/spark/src/main/scala/SparkApp.scala#L118).
Il cluster Cassandra a 3 nodi viene eseguito sugli stessi computer che ospitano anche i nodi Spark Worker. Il nodo Spark Maestro non viene eseguito un nodo Cassandra:
Machine 1 Machine 2 Machine 3 Machine 4
Spark Master Spark Worker Spark Worker Spark Worker
Cassandra node Cassandra node Cassandra node
Il ragionamento dietro questo è che io voglio per ottimizzare la località dei dati - quando si esegue il mio app Spark sul cluster, ogni lavoratore ha solo bisogno di parlare con la sua Cassandra locale nodo.
Ora, al momento della presentazione il mio Spark applicazione al cluster eseguendo spark-submit --deploy-mode client --master spark://machine-1
da macchina 1 (Spark Master), mi aspetto che il seguente:
- un'istanza driver viene avviato sul Spark Maestro
- la autista inizia un esecutore su ogni lavoratore Spark
- del driver distribuisce la mia domanda di ciascun esecutore
- mia applicazione funziona su ogni esecutore, e da lì, parla con Cassandra via
127.0.0.1:9042
Tuttavia, questo non sembra essere il caso. Invece, lo Spark Master prova a parlare con Cassandra (e fallisce, perché non c'è nessun nodo Cassandra nell'host della Macchina 1).
Che cosa ho frainteso? Funziona diversamente? L'autista infatti legge i dati di Cassandra e distribuisce i dati agli Executor? Ma poi non potrei mai leggere i dati più grandi di memory of Machine 1
, anche se la memoria totale del mio cluster è sufficiente.
Oppure, l'autista comunica a Cassandra di non leggere i dati, ma di scoprire come suddividere i dati e istruisce gli esecutori a leggere la "loro" parte dei dati?
Se qualcuno può illuminarmi, sarebbe molto apprezzato.
In questo caso sono i metadati relativi all'intervallo di token e come è diviso tra i nodi +1 – RussS