Ho impostato il cluster EC2 con Spark. Tutto funziona, tutti i master/slave sono attivi e funzionanti.Invio di lavori al cluster Spark EC2 da remoto
Sto tentando di inviare un lavoro di esempio (SparkPi). Quando eseguo il ssh su cluster e lo invio da lì, tutto funziona correttamente. Tuttavia, quando il driver viene creato su un host remoto (il mio laptop), non funziona. Ho provato entrambe le modalità per --deploy-mode
:
--deploy-mode=client
:
dal mio computer portatile:
./bin/spark-submit --master spark://ec2-52-10-82-218.us-west-2.compute.amazonaws.com:7077 --class SparkPi ec2test/target/scala-2.10/ec2test_2.10-0.0.1.jar
risultati nei seguenti avvertenze indefiniti/errori:
avvertono TaskSchedulerImpl: Il lavoro iniziale non ha accettato alcuna risorsa; controllare la UI cluster per garantire che i lavoratori sono registrati e hanno sufficiente memoria 15/02/22 18:30:45
ERRORE SparkDeploySchedulerBackend: ha chiesto di rimuovere inesistente esecutore 0 15/02/22 18:30: 45
ERRORE SparkDeploySchedulerBackend: chiesto per rimuovere inesistente esecutore 1
... e non è riuscito piloti - in UI Spark Web "i piloti hanno completato" con "Stato = ERRORE" apparire.
Ho provato a passare i limiti per core e memoria a presentare sceneggiatura, ma non ha aiutato ...
--deploy-mode=cluster
:
dal mio computer portatile:
./bin/spark-submit --master spark://ec2-52-10-82-218.us-west-2.compute.amazonaws.com:7077 --deploy-mode cluster --class SparkPi ec2test/target/scala-2.10/ec2test_2.10-0.0.1.jar
Il risultato è:
.... Driver riuscito presentato come pilota-20150223023734-0.007 ... attesa prima polling per lo stato del driver ... maestro di polling per conducente Stato stato di conducente-20150223023734-0.007 è errore Eccezione dal cluster è stato: java.io.FileNotFoundException: File file: /home/oleg/spark/spark12/ec2test/target/scala-2.10/ec2test_2.10-0.0.1.jar non esiste. java.io.FileNotFoundException: File file: /home/oleg/spark/spark12/ec2test/target/scala-2.10/ec2test_2.10-0.0.1.jar non esiste. a org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus (RawLocalFileSystem.java:397) a org.apache.hadoop.fs.FilterFileSystem.getFileStatus (FilterFileSystem.java:251) a org.apache.hadoop.fs .FileUtil.copy (FileUtil.java:329) a org.apache.spark.deploy.worker.DriverRunner.org $ apache $ spark $ deploy $ worker $ DriverRunner $$ downloadUserJar (DriverRunner.scala: 150) allo org .apache.spark.deploy.worker.DriverRunner $$ anon $ 1.run (DriverRunner.scala: 75)
Quindi, mi farebbe piacere eventuali indicazioni su quello che sta andando male e alcune linee guida come distribuire posti di lavoro da client remoto. Grazie.
UPDATE: Così, per il secondo numero in modalità cluster, il file deve essere globalmente visibile da ogni nodo del cluster, quindi deve essere da qualche parte in posizione accessibile. Questo risolve IOException ma porta allo stesso problema della modalità client.
penso che il programma del driver serve il codice/roba per i lavoratori. La tua lappie è raggiungibile dai tuoi lavoratori? Normalmente è necessario il programma del driver il più vicino possibile al cluster. –
Come @AlisterLee ha detto che dovresti controllare le impostazioni tra il tuo computer ei nodi ec2 (firewall, impostazioni della porta, ecc.). Se fallisce, allora potresti provare a portarlo alla mailing list (e poi riferire la soluzione :)) –