2015-02-26 6 views
27

Sto provando a eseguire un'applicazione spark utilizzando bin/spark-submit. Quando faccio riferimento al mio jar di applicazione nel mio filesystem locale, funziona. Tuttavia, quando ho copiato il mio vaso applicazione a una directory in HDFS, ottengo la seguente eccezione:Spark-submit non funziona quando jar di applicazione è in hdf

Attenzione: Skip HDFS jar remoti: // localhost: 9000/user/HDFS/vasetti/semplice-project-1.0 -SNAPSHOT.jar. java.lang.ClassNotFoundException: com.example.SimpleApp

Ecco il comando:

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

che sto utilizzando Hadoop versione 2.6.0, la versione 1.2.1 scintilla

+0

cosa hai deciso finalmente qui? Sei passato a YARN o hai trovato un altro workaround? Sanjiv, sotto, stava indicando un bug che sembra marginalmente rilevante. Hai provato il cluster in -deploy-mode? Grazie, bug interessante se è davvero un bug e non sembra essere stato inviato direttamente a JIRA. Forse controllare [questo] (https://issues.apache.org/jira/browse/SPARK-10643) – JimLohse

risposta

18

L'unico modo che ha funzionato per me, quando stavo usando

--master filo-cluster

+3

Cosa succede se non vogliono usare YARN? Vedo che questa è la risposta accettata, ma l'OP stava cercando di usare local [*]? Eeen-interes- sante. – JimLohse

0

Sì, deve essere un file locale. Penso che sia semplicemente la risposta.

+5

Ma nella [documentazione ufficiale] (https://spark.apache.org/docs/1.2.1/submitting -applications.html), ha dichiarato che: "application-jar: percorso di un jar in bundle che include l'applicazione e tutte le dipendenze. L'URL deve essere visibile a livello globale all'interno del cluster, ad esempio un percorso ** hdfs: // ** o un file: // percorso che è presente su tutti i nodi. " – dilm

+0

@dlim buon punto. Vale la pena porre una domanda alla mailing list dell'utente @. Dalla scrematura del codice sembra che in particolare solo consente file locali –

+0

Grazie. Proverò la mailing list per ora. – dilm

4

Per rendere libreria HDFS accessibili per stimolare-lavoro, è necessario eseguire lavoro in modalità cluster.

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

Inoltre, Vi è Spark JIRA generato per la modalità client che non è ancora supportata.

SPARK-10643: Supporto HDFS download di applicazioni in modalità client scintilla presentare

+0

Bella risposta a me questo dovrebbe essere accettato :) ma non stai mostrando la modalità cluster, stai mostrando il filato, hai bisogno di '--deploy-mode cluster' e' --master spark: // yourmaster: 7077' invece di ' --master yarn-cluster'? Se l'OP ha detto che sta usando YARN, l'ho perso, anche se immagino che l'HDFS sia un buon indizio. Penso che, come detto, l'OP sta cercando di usare il manager di Spark e trovare un bug con la modalità locale? – JimLohse

0

C'è una soluzione. È possibile montare la directory in HDFS (che contiene il jar dell'applicazione) come directory locale.

ho fatto lo stesso (con memorizzazione blob azzurro, ma dovrebbe essere simile per HDFS) comando

esempio per 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

Ora, nella vostra scintilla comando submit, che fornisci il percorso dal comando sopra

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

Problemi correlati