/ / Aký je správny spôsob spustenia aplikácie Spark na YARN pomocou Oozie (s Hue)? - apache-spark, cloudera, priadza, oozie, hue

Aký je správny spôsob spustenia aplikácie Spark na YARN pomocou Oozie (s Hue)? - apache-spark, clouddera, priadza, oozie, odtieň

Napísal som žiadosť v Scale, ktorá používa Spark.
Aplikácia pozostáva z dvoch modulov - App modul, ktorý obsahuje triedy s odlišnou logikou, a Env modul, ktorý obsahuje inicializačný kód prostredia a systému, ako aj pomocné funkcie.
Vstupný bod sa nachádza v Enva po inicializácii vytvorí triedu v App (podľa args, použitím Class.forName) a logika je vykonaná.
Moduly sa exportujú do 2 rôznych JAR (konkrétne: env.jar a app.jar).

Keď spustím aplikáciu lokálne, spustí sa dobre. Ďalším krokom je nasadenie aplikácie na moje servery. Používam CloudH's CDH 5.4.

Použil som odtieň Hue na vytvorenie nového pracovného postupu Oozie s úlohou Spark s nasledujúcimi parametrami:

  • Majster iskier: yarn
  • Mode: cluster
  • Názov aplikácie: myApp
  • Jar / py súbory: lib/env.jar,lib/app.jar
  • Hlavná trieda: env.Main (v Env module)
  • argumenty: app.AggBlock1Task

Potom som umiestnil 2 JAR dovnútra lib priečinok v priečinku pracovného toku (/user/hue/oozie/workspaces/hue-oozie-1439807802.48).

Keď spustím pracovný postup, vyvolá to a FileNotFoundException a aplikácia sa nespustí:

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

Keď však nechám parametre hlavného a režimu Spark prázdne, všetko funguje správne, ale keď skontrolujem spark.master programovo je nastavený na local[*] a nie yarn, Pri pozorovaní protokolov som sa s tým stretol aj pri konfigurácii akcie Oozie Spark:

--master
null
--name
myApp
--class
env.Main
--verbose
lib/env.jar,lib/app.jar
app.AggBlock1Task

Predpokladám, že to nerobím správne - nenastavujem parametre hlavného a režimu Spark a nespúšťam aplikáciu spark.master nastavený na local[*], Pokiaľ to chápem, vytvorenie SparkConf objekt v aplikácii by mal nastaviť spark.master majetok podľa toho, čo uvediem v Oozie (v tomto prípade yarn), ale to jednoducho nefunguje, keď to urobím ..

Robím niečo zle alebo chýba?
Akákoľvek pomoc bude veľmi ocenená!

odpovede:

2 pre odpoveď č. 1

Tento problém sa mi podarilo vyriešiť vložením dvoch JAR do adresára používateľa /user/danny/app/ a špecifikovanie Jar/py files parameter ako ${nameNode}/user/danny/app/env.jar, Jeho spustenie spôsobilo a ClassNotFoundException byť hodený, aj keď JAR sa nachádzal v rovnakom priečinku v HDFS. Aby som to obišiel, musel som ísť do nastavení a do zoznamu možností pridať nasledovné: --jars ${nameNode}/user/danny/app/app.jar, Týmto spôsobom App modul je tiež referenčný a aplikácia beží úspešne.