2014-06-26 9 views
8

Próbuję wykonać pyspark z mojego komputera Mac, aby wykonać obliczenia na klastrze iskrowym EC2.
Jeśli mogę się zalogować do klastra, to działa zgodnie z oczekiwaniami:Nie mogę wykonać prostego zadania na klastrze iskra ec2 z lokalnego pyspark

$ ec2/spark-ec2 -i ~/.ec2/spark.pem -k spark login test-cluster2 
$ spark/bin/pyspark 

Następnie wykonać proste zadanie

>>> data=sc.parallelize(range(1000),10)` 
>>> data.count() 

działa zgodnie z oczekiwaniami:

14/06/26 16:38:52 INFO spark.SparkContext: Starting job: count at <stdin>:1 
14/06/26 16:38:52 INFO scheduler.DAGScheduler: Got job 0 (count at <stdin>:1) with 10 output partitions (allowLocal=false) 
14/06/26 16:38:52 INFO scheduler.DAGScheduler: Final stage: Stage 0 (count at <stdin>:1) 
... 
14/06/26 16:38:53 INFO spark.SparkContext: Job finished: count at <stdin>:1, took 1.195232619 s 
1000 

ale teraz gdybym spróbować to samo z lokalnej maszyny,

$ MASTER=spark://ec2-54-234-204-13.compute-1.amazonaws.com:7077 bin/pyspark 

to nie wydaje się podłączyć do klastra

14/06/26 09:45:43 INFO AppClient$ClientActor: Connecting to master spark://ec2-54-234-204-13.compute-1.amazonaws.com:7077... 
14/06/26 09:45:47 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient memory 
... 
    File "/Users/anthony1/git/incubator-spark/python/lib/py4j-0.8.1-src.zip/py4j/protocol.py", line 300, in get_return_value 
py4j.protocol.Py4JJavaError: An error occurred while calling o20.collect. 
: org.apache.spark.SparkException: Job aborted: Spark cluster looks down 
14/06/26 09:53:17 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient memory 

Myślałem, że problemem było w bezpieczeństwo EC2, ale to nie pomaga nawet po dodaniu zasady przychodzących do obu grup mistrzowskich i bezpieczeństwa niewolnikiem zaakceptować wszystkie porty .

Każda pomoc zostanie bardzo doceniona!

Inni proszą samo pytanie na liście mailingowej http://apache-spark-user-list.1001560.n3.nabble.com/Deploying-a-python-code-on-a-spark-EC2-cluster-td4758.html#a8465

Odpowiedz

8

Skrypt spark-ec2 konfiguruje Spark Cluster w EC2 jako samodzielny, co oznacza, że ​​nie może działać ze zdalnymi wysyłkami. Byłem zmagał się z tym samym błędem, który opisywałeś przez kilka dni, zanim zrozumiałeś, że nie jest on obsługiwany. Błąd komunikatu jest niestety niepoprawny.

Musisz skopiować swoje rzeczy i zalogować się do urządzenia master, aby wykonać zadanie iskry.

+0

Niedawno zacząłem pracować w plugin sbt, aby obejść to ograniczenie. https://github.com/felixgborrego/sbt-spark-ec2-plugin – Felix

+0

Jakoś przeoczyłem twoją odpowiedź Felix. Dzięki – Anthony

1

Z mojego doświadczenia Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient memory oznacza zazwyczaj przypadkowo ustawić rdzenie zbyt wysoka, lub ustawić pamięć Executer zbyt wysokie - czyli wyższe niż węzły faktycznie mają.

Inne, mniej prawdopodobne przyczyny, mogą być przyczyną błędnego identyfikatora URI i niemożności połączenia się z serwerem głównym. I raz widziałem ten problem, gdy partycja /run była w 100%.

Jeszcze mniej prawdopodobne, że twój klaster może w rzeczywistości spaść i musisz ponownie uruchomić robotów iskrowych.

+0

Dzięki samthebest. Pierwsze i trzecie nie wydają się być przyczyną, ponieważ mogę wykonać zadanie zgodnie z oczekiwaniami, jeśli zostało przesłane z samego węzła głównego. Tak więc klaster zdecydowanie działa. Z drugiej przyczyny prawdopodobnie tak nie jest, ponieważ celowo wprowadziłem niewłaściwy identyfikator URI do testu i otrzymałem inny błąd. W rzeczywistości, tail -f w logu węzła głównego pokazuje również odpowiednie błędy – Anthony

+0

spróbuj uruchomić df -h i df -i na wszystkich twoich węzłach (długie ujęcie). – samthebest

Powiązane problemy