2016-08-03 2 views
3

У меня возникли проблемы с пониманием того, какая ошибка возвращается к Oozie. Объяснение:OOzie Spark: code 101 error

Я создал очень простой "работу" в Oozie, то XML является то, что:

<workflow-app name="Massimiliano" xmlns="uri:oozie:workflow:0.5"> 
    <start to="spark-2adf"/> 
    <kill name="Kill"> 
     <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> 
    </kill> 
    <action name="spark-2adf"> 
     <spark xmlns="uri:oozie:spark-action:0.1"> 
      <job-tracker>${jobTracker}</job-tracker> 
      <name-node>${nameNode}</name-node> 
      <master>local[*]</master> 
      <mode>client</mode> 
      <name>MySpark</name> 
       <class>org.XXX.SimpleApp</class> 
      <jar>${nameNode}/user/${wf:user()}//prova_spark/SimpleApp1.jar</jar> 
     </spark> 
     <ok to="End"/> 
     <error to="Kill"/> 
    </action> 
    <end name="End"/> 
</workflow-app> 

The job.properties является продолжением:

nameNode=hdfs://10.203.17.90:8020 
jobTracker=10.203.17.90:8021 
master=local[*] 
queueName=default 
oozie.use.system.libpath=true 
oozie.wf.application.path=${nameNode}/user/${user.name}/hdfs/user/oozie/share/lib/lib_20160628182408/spark 

Я попробовал все больше и больше время для изменения всех параметров без каких-либо результатов.

Ошибка, которая поражает меня это:

Main class [org.apache.oozie.action.hadoop.SparkMain], exit code [101] 

Имя узла является главным узлом; Я не знаю, правильно ли установлен oozie.wf.application.path;

Более подробно об ошибке:

    hdfs://nameservice1/user/hdfs//prova_spark/SimpleApp1.jar 

================================================================= 

>>> Invoking Spark class now >>> 

Intercepting System.exit(101) 

<<< Invocation of Main class completed <<< 

Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.SparkMain], exit code [101] 

Oozie Launcher failed, finishing Hadoop job gracefully 

Oozie Launcher, uploading action data to HDFS sequence file: hdfs://nameservice1/user/hdfs/oozie-oozi/0000117-160804173605999-oozie-oozi-W/spark-2adf--spark/action-data.seq 

Oozie Launcher ends 

hdfs://nameservice1/user/hdfs//prova_spark/SimpleApp1.jar Путь правильно! Но я не знаю, где я должен искать решение этой проблемы.

Помогите мне, пожалуйста?

ответ

1
> Step 1. First capture spark and related jars used to execute. One way would be to execute with spark-submit at command line. 
> Step 2. Create lib folder if not exists in the workflow path. 
> Step 3. Place all the jars collected in step 1 in the lib folders 
> Step 4. Run the workflow. 

I think this should fix it. However, I would curious to know if it still didn't work. 
+0

К сожалению, это не работает! Я выполнил следующие шаги: теперь проблема заключается в следующем: 'org.apache.oozie.action.hadoop.SparkMain.loadActionConf() Lorg/apache/hadoop/conf/Configuration;' – Alessandro

-1

Я решил таким образом: по вопросам, которые я действительно не понимаю, искрообразование с Оози не работает очень хорошо. Я сказал, что «не работает очень хорошо», потому что все ошибки, возникающие в syslog и stderr, очень общие (описание ошибок очень непонятно), поэтому очень сложно решить каждую проблему и каждый раз, когда вам нужно идти в тени, чтобы решить вашу проблему.

Итак, я изменил подход, и я использовал shell job, где я ставлю этот код:

d=`date +"%Y-%m-%d_%T" | sed 's/:/-/g'` 
echo "START_TIMESTAMP=$d" 

export HADOOP_USER_NAME=hdfs 

spark-submit --master yarn --deploy-mode cluster --class org.XXX.TryApp TryApp.jar "/user/hue/oozie/workspaces/hue-oozie-1471949509.25" 

На практике я написал «среднее решение», поэтому я понимаю, более немного Hadoop с Спарк.

Я приветствовал искр с пряжей в режиме кластера, и я передаю свой банку путь к файлу. В моей лестнице-коде, это главные строки:

import ... 
import org.apache.hadoop.fs.{ FileSystem, Path } 

object TryApp { 

    def main(args: Array[String]) { 
    val conf = new SparkConf().setAppName("TryApp") 
    val sc = new SparkContext() 
    val sqlContext = new HiveContext(sc) 

    val fs = FileSystem.get(sc.hadoopConfiguration).getUri //hdfs://nameservice1 

} 

Теперь, учитывая, что путь //hdfs://nameservice1, это было очень просто знало остальную часть пути, и я передал другую часть через переменную арг (0) ,

В Hue интерфейсе, вы должны определить 3 вещи:

enter image description here

  1. Имя файла ш, без аргументов, потому что я указал это в файле action.sh
  2. Вы должны укажите вложения: первый - это action.sh, второй - файл, который мы должны запустить через Oozie.

Это работает для меня, и я думаю, что это лучшее решение, потому что, даже если у вас есть проблемы, вывод ошибки очень ясен, и вы можете исправить свой код или свою работу.

Я надеюсь быть полезным кому-то!

0

Я также столкнулся с аналогичной проблемой, и выясняется, что путь банкомата <jar>${nameNode}/user/${wf:user()}//prova_spark/SimpleApp1.jar</jar> shuold будет вашим местным путем. Вам не нужно класть свою искровую баночку в HDFS, просто используйте ту, что есть в вашей Linux-системе. Решение решило мою проблему, поэтому я размещаю ее здесь.