2015-07-29 8 views
10

Anwendungs ​​jar indem Funken- classPath für Maven Abhängigkeiten Verringerung der Größe:Rahmen Funken CLASSPATHs auf EC2: spark.driver.extraClassPath und spark.executor.extraClassPath

Mein Cluster mit 3 EC2-Instanzen, auf denen hadoop und spark läuft. Wenn ich jar mit maven-Abhängigkeiten baue, wird es zu groß (etwa 100 MB), was ich vermeiden möchte, da Jar auf allen Knoten repliziert wird, jedes Mal wenn ich den Job ausführe.

Um zu vermeiden, dass ich ein Maven-Paket bauen als „Maven Paket“ .Für Abhängigkeitsauflösung ich auf jedem Knoten die alle Maven Abhängigkeiten heruntergeladen haben, und dann nur oben unter Glas Bahnen vorgesehen:

Ich habe hinzugefügt Klasse auf jedem Knoten Pfade im „spark-defaults.conf“ als

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 

Es hat sich lokal auf einzelnen Knoten gearbeitet. Noch bekomme ich diesen Fehler. Jede Hilfe wird geschätzt.

Antwort

9

Schließlich konnte ich das Problem lösen. Ich habe Anwendung Glas mit "MVN-Paket" anstelle von erstellt "mvn sauber kompilieren Assembly: single", so dass es nicht die Maven Abhängigkeiten beim Erstellen von jar herunterladen (aber müssen diese Jar/Abhängigkeiten Laufzeit bereitstellen) was zu kleinen Jar führte (da es nur einen Verweis auf Abhängigkeiten gibt).

Dann habe ich unter zwei Parameter in Funken defaults.conf auf jedem Knoten als hinzugefügt:

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 

So stellt sich Frage, dass, wie Anwendung JAR die Maven Abhängigkeiten erhalten wird (erforderlich jars) Laufzeit?

Dafür habe ich alle erforderlichen Abhängigkeiten auf jedem Knoten mit mvn sauber kompilieren Assembly: single im Voraus heruntergeladen.

0

Sie müssen nicht alle JARS-Dateien ablegen.Just Legen Sie Ihre JAR-Datei für die Anwendung. Wenn Sie erneut Fehler erhalten, dann legen Sie alle JAR-Dateien, die benötigt werden.

Sie müssen jars Datei von setJars() Methoden setzen.

+0

Ich weiß, dass Anwendung Jar benötigt wird und es ist alles bereit. Ich spreche über andere Gläser (Maven Abhängigkeit). –

+0

Setzen Sie nur maven Abhängigkeit in Ihre Pom-Datei. Es wird alle JAR-Dateien in der JAR-Datei der Hauptanwendung aufnehmen. Es löst Ihr Problem –

+0

Wenn ich dies tun, wird es in großen jar-Datei, die ich versuche zu vermeiden. –