Ho scritto un'applicazione in Scala che utilizza Spark.
L'applicazione è composta da due moduli: il modulo App
che contiene classi con logica diversa e il modulo Env
che contiene il codice di inizializzazione dell'ambiente e del sistema, nonché le funzioni di utilità.
Il punto di ingresso si trova in Env
e dopo l'inizializzazione crea una classe in App
(secondo args
, utilizzando Class.forName
) e la logica viene eseguita.
I moduli vengono esportati in 2 diversi JAR (ovvero, env.jar
e app.jar
).Qual è il modo corretto di eseguire un'applicazione Spark su YARN usando Oozie (con Hue)?
Quando eseguo l'applicazione localmente, viene eseguita correttamente. Il prossimo passo è quello di distribuire l'applicazione sui miei server. Uso il CDH 5.4 di Cloudera.
ho usato Hue per creare un nuovo flusso di lavoro Oozie con un compito Spark con i seguenti parametri:
- Spark Master:
yarn
- Modalità:
cluster
- App nome:
myApp
- Vasi/file py:
lib/env.jar,lib/app.jar
- Classe principale:
env.Main
(nel moduloEnv
) - Argomenti:
app.AggBlock1Task
ho poi poste le 2 vasetti all'interno della cartella lib
nella cartella del flusso di lavoro (/user/hue/oozie/workspaces/hue-oozie-1439807802.48
).
Quando eseguo il flusso di lavoro, si getta un FileNotFoundException
e l'applicazione non esegue:
java.io.FileNotFoundException: File file:/cloudera/yarn/nm/usercache/danny/appcache/application_1439823995861_0029/container_1439823995861_0029_01_000001/lib/app.jar,lib/env.jar does not exist
Tuttavia, quando lascio i parametri master Spark e la modalità vuoto, tutto funziona correttamente, ma quando controllo spark.master
a livello di programmazione è impostato su local[*]
e non su yarn
. Inoltre, osservando i registri, ho incontrato questo sotto configurazione dell'azione Spark Oozie:
--master
null
--name
myApp
--class
env.Main
--verbose
lib/env.jar,lib/app.jar
app.AggBlock1Task
presumo non sto facendo bene - non impostando maestro Spark e parametri di modalità e l'esecuzione dell'applicazione con spark.master
set per local[*]
. Per quanto ho capito, la creazione di un oggetto SparkConf
all'interno dell'applicazione dovrebbe impostare la proprietà spark.master
a tutto ciò che ho specificato in Oozie (in questo caso yarn
), ma semplicemente non funziona quando lo faccio ..
c'è qualcosa Sto sbagliando o mi manca?
Qualsiasi aiuto sarà molto apprezzato!
Bello trovare, questo è difficile, cercherà di aggiungere un aiuto migliore nell'interfaccia utente! – Romain