wake-up-neo.net

Spark-Submit funktioniert nicht, wenn sich die Anwendungsjar in HDFS befindet

Ich versuche eine Funkenanwendung mit bin/spark-submit auszuführen. Wenn ich in meinem lokalen Dateisystem auf mein Anwendungsglas verweise, funktioniert es. Wenn ich jedoch meine Anwendungsjar in ein Verzeichnis in hdfs kopierte, erhalte ich die folgende Ausnahme: 

Warnung: Remote-Jar-HDFS überspringen: // localhost: 9000/user/hdfs/jars/simple-project-1.0-SNAPSHOT.jar . Java.lang.ClassNotFoundException: com.example.SimpleApp

Hier ist der Befehl:

$ ./bin/spark-submit --class com.example.SimpleApp --master local hdfs://localhost:9000/user/hdfs/jars/simple-project-1.0-SNAPSHOT.jar

Ich verwende hadoop Version 2.6.0, Spark-Version 1.2.1

28
dilm

Die einzige Art und Weise, wie es für mich funktionierte, als ich es benutzte 

--master Garngruppe

19
Romain

Um die HDFS-Bibliothek für Spark-Jobs zugänglich zu machen, müssen Sie den Job im Cluster-Modus ausführen.

$SPARK_HOME/bin/spark-submit \
--deploy-mode cluster \
--class <main_class> \
--master yarn-cluster \
hdfs://myhost:8020/user/root/myjar.jar

Außerdem wurde Spark JIRA für den Client-Modus erhöht, der noch nicht unterstützt wird.

SPARK-10643 : Unterstützt das Herunterladen von HDFS-Anwendungen im Client-Modus

8
Sanjiv

Es gibt eine Problemumgehung. Sie können das Verzeichnis in HDFS (das Ihre Anwendungsjar enthält) als lokales Verzeichnis einhängen.

Ich habe das gleiche gemacht (mit Azure Blob Storage, sollte aber für HDFS ähnlich sein)

beispielbefehl für Azure Wasb

Sudo mount -t cifs //{storageAccountName}.file.core.windows.net/{directoryName} {local directory path} -o vers=3.0,username={storageAccountName},password={storageAccountKey},dir_mode=0777,file_mode=0777

Jetzt geben Sie in Ihrem Spark-Submit-Befehl den Pfad aus dem obigen Befehl an 

$ ./bin/spark-submit --class com.example.SimpleApp --master local {local directory path}/simple-project-1.0-SNAPSHOT.jar

0
amit kapoor