2015-11-09 11 views
5

Mam dwa klastry, jeden w lokalnej maszynie wirtualnej inny w zdalnej chmurze. Obie klastry w trybie Standalone.Jak przesłać kod do zdalnego klastra Spark z IntelliJ IDEA

Moja Środowisko:

Scala: 2.10.4 
Spark: 1.5.1 
JDK: 1.8.40 
OS: CentOS Linux release 7.1.1503 (Core) 

Miejscowy klastra:

Spark Master: iskra: // local1: 7077

zdalnego klastra:

Spark Master: spark: // remote1: 707 7

Chcę dokończyć to:

kody zapisu (tylko proste słowo-count) w IntelliJ IDEA lokalnie (na moim laptp) i ustaw Spark Mistrza URL spark://local1:7077 i spark://remote1:7077, a następnie uruchomić mój kody w IntelliJ IDEA. Oznacza to, że nie chcę używać zadania spark-submit.

Ale mam pewien problem:

Kiedy korzystać z lokalnego klastra, wszystko idzie dobrze. Uruchamiaj kody w IntelliJ IDEA lub użyj funkcji składania iskier, aby przesłać zadanie do klastra i zakończyć pracę.

ale kiedy użyć zdalnego klastra, mam dziennik ostrzegawczy:

TaskSchedulerImpl: Początkowa praca nie przyjęła żadnych środków; sprawdzić UI klastra w celu zapewnienia, że ​​pracownicy są zarejestrowane i posiadają wystarczające zasoby

Jest wystarczające zasoby nie wystarczająca pamięć!

Ten dziennik kontynuuje drukowanie, bez dalszych czynności. Zarówno spark-submit, jak i kody run w IDI IntelliJ, są takie same.

chcę wiedzieć:

  • Czy to możliwe, aby przesłać kody z IntelliJ IDEA do zdalnego klastra?
  • Jeśli wszystko jest w porządku, czy wymaga konfiguracji?
  • Jakie są możliwe przyczyny, które mogą powodować mój problem?
  • Jak mogę sobie z tym poradzić?

Wielkie dzięki!

Aktualizacja

Jest podobne pytanie here, ale myślę, że moja scena jest inna. Kiedy uruchomię moje kody w IntelliJ IDEA i ustawię Spark Master na lokalny klaster maszyn wirtualnych, to działa. Ale zamiast tego mam ostrzeżenie Initial job has not accepted any resources;....

Chcę wiedzieć, czy może to spowodować polityka bezpieczeństwa lub fajerwerki?

+0

Prawdopodobny duplikat [działającego kodu iskrownika na eclipse z iskrą instalowaną na innym serwerze] (http://stackoverflow.com/questions/33591481/running-spark-code-on-eclipse-with-spark-being-install -on-another-server) –

+0

@AlbertoBonsanto Ale ten inny wpis (który jest twój) nie * pokazuje *, * jak uruchomić bezpośrednio z IJ: wymaga zbudowania słoika i użycia 'spark-submit'. – javadba

Odpowiedz

3

Przesyłanie kodu programowo (np. Przez SparkSubmit) jest dość trudne. Przynajmniej jest wiele ustawień środowiska i uwag - obsługiwanych przez skrypt spark-submit - które są dość trudne do powielenia w programie scala. Wciąż nie jestem pewien, jak to osiągnąć: w tej grupie deweloperów iskrzy wiele wątków.

Moja odpowiedź jest tu o części postu: konkretnie

TaskSchedulerImpl: Początkowa praca nie przyjął żadnych zasobów; sprawdzić swoje UI klastra w celu zapewnienia, że ​​pracownicy są zarejestrowane i mają wystarczające zasoby

Powodem jest zazwyczaj było niedopasowanie na żądanej pamięci i/lub liczby rdzeni z pracy versus jakie były dostępne w klastrze . Ewentualnie przy składaniu z IJ z

$ SPARK_HOME/conf/zapłonem defaults.conf

nie zostały właściwie dopasowanie parametrów wymaganych dla zadania na istniejącego klastra. Być może trzeba zaktualizować:

spark.driver.memory 4g 
spark.executor.memory 8g 
spark.executor.cores 8 

Można sprawdzić ui zapłonową na porcie 8080, aby sprawdzić, czy masz wymagane parametry są rzeczywiście dostępne w klastrze.

Powiązane problemy