2015-07-29 33 views
10

pomniejszenie aplikacji słoja zapewniając spark- Classpath maven dla zależności:Ustawienie zapłonowe ścieżek dla klas o EC2: spark.driver.extraClassPath i spark.executor.extraClassPath

My klastra o w 3 przypadkach EC2, w którym hadoop iskra działa. Jeśli zbuduję słoik z zależnością od maven, staje się on zbyt duży (około 100 MB), którego chcę uniknąć, ponieważ Jar robi replikację na wszystkich węzłach, za każdym razem, gdy uruchamiam zadanie.

Aby uniknąć że muszę zbudować pakiet maven maven jako „pakiet” .Do rozwiązywaniu zależności Pobrałem wszystkie zależności Maven na każdym węźle, a następnie tylko pod warunkiem powyżej poniżej ścieżki słoika:

Dodałem klasy ścieżki na każdym węźle "zapłonowej-defaults.conf" jak

spark.driver.extraClassPath  /home/spark/.m2/repository/com/google/code/gson/gson/2.3.1/gson-2.3.1.jar:/home/spark/.m2/repository/com/datastax/cassandra/cassandra-driver-core/2.1.5/cassandra-driver-core-2.1.5.jar:/home/spark/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar:/home/spark/.m2/repository/com/google/collections/google-collections/1.0/google-collections-1.0.jar:/home/spark/.m2/repository/com/datastax/spark/spark-cassandra-connector-java_2.10/1.2.0-rc1/spark-cassandra-connector-java_2.10-1.2.0-rc1.jar:/home/spark/.m2/repository/com/datastax/spark/spark-cassandra-connector_2.10/1.2.0-rc1/spark-cassandra-connector_2.10-1.2.0-rc1.jar:/home/spark/.m2/repository/org/apache/cassandra/cassandra-thrift/2.1.3/cassandra-thrift-2.1.3.jar:/home/spark/.m2/repository/org/joda/joda-convert/1.2/joda-convert-1.2.jar 

on pracował, lokalnie na pojedynczym węźle. Nadal dostaję ten błąd. Każda pomoc zostanie doceniona.

Odpowiedz

9

W końcu udało mi się rozwiązać problem. Stworzyłem słoik aplikacji przy użyciu "pakietu mvn" zamiast "Kompilacja mvn clean compile: single", tak aby nie pobierać zależności manfarów podczas tworzenia słoika (Ale trzeba podać te słoiki/zależności uruchamiające) co spowodowało mały rozmiar Jar (jako że istnieje tylko odniesienie zależności).

Następnie dodałem poniżej dwa parametry w zapłonowej-defaults.conf w każdym węźle jak:

spark.driver.extraClassPath  /home/spark/.m2/repository/com/datastax/cassandra/cassandra-driver-core/2.1.7/cassandra-driver-core-2.1.7.jar:/home/spark/.m2/repository/com/googlecode/json-simple/json-simple/1.1/json-simple-1.1.jar:/home/spark/.m2/repository/com/google/code/gson/gson/2.3.1/gson-2.3.1.jar:/home/spark/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar 

spark.executor.extraClassPath  /home/spark/.m2/repository/com/datastax/cassandra/cassandra-driver-core/2.1.7/cassandra-driver-core-2.1.7.jar:/home/spark/.m2/repository/com/googlecode/json-simple/json-simple/1.1/json-simple-1.1.jar:/home/spark/.m2/repository/com/google/code/gson/gson/2.3.1/gson-2.3.1.jar:/home/spark/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar 

Więc powstaje pytanie, które, jak JAR aplikacja dostanie zależności Maven (wymagane jar's) run-time?

W tym celu pobrałem wszystkie wymagane zależności dla każdego węzła przy użyciu zestawu mvn clean compile clean: single z góry.

0

Nie trzeba umieszczać wszystkich plików jar. Wystarczy włożyć plik jar aplikacji. Jeśli pojawi się błąd ponownie, niż wszystkie pliki JAR, które są potrzebne.

Musisz umieścić plik jar za pomocą metod setJars().

+0

Wiem, że aplikacja Jar jest potrzebna i wszystko gotowe. Mówię o innych słoikach (zależność Mavena). –

+0

włóż tylko zależność maven w pliku pom. Zajmie to wszystkie pliki jar w głównym pliku jar aplikacji. to rozwiąże twój problem –

+0

Jeśli to zrobię, spowoduje to duży plik jar, którego próbuję uniknąć. –