Apache spark OOzie Spark:代码101错误
我在理解Oozie返回给我什么样的错误时遇到了一些问题。 说明: 我在Oozie中创建了一个非常简单的“作业”,XML是:Apache spark OOzie Spark:代码101错误,apache-spark,oozie,Apache Spark,Oozie,我在理解Oozie返回给我什么样的错误时遇到了一些问题。 说明: 我在Oozie中创建了一个非常简单的“作业”,XML是: <workflow-app name="Massimiliano" xmlns="uri:oozie:workflow:0.5"> <start to="spark-2adf"/> <kill name="Kill"> <message>Action failed, error message[
<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>
我尝试了越来越多的时间来改变所有的参数,但毫无结果
困扰我的错误是:
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
=================================================================
>>>现在调用Spark类>>>
拦截系统出口(101)
我已经用这种方式解决了:对于我真的不理解的问题,Oozie的spark工作不太好。
我说“不太好用”,因为syslog和stderr中发生的所有错误都非常普遍(错误的描述非常难以理解),所以很难解决每个问题,每次都要在阴影中解决问题
因此,我改变了方法,并使用了shell作业
,其中我将以下代码放在:
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"
在实践中,我已经编写了“中间解决方案”,因此我对使用Spark的Hadoop有了更多的了解
我以集群模式启动了spark作业,并将文件路径传递给jar。在我的scala代码中,这是主要行:
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
,知道路径的其余部分非常简单,我通过变量args(0)传递了另一部分
在Hue
界面中,您必须指定3项内容:
文件sh的名称,没有参数,因为我在文件action.sh
您必须指定附件:第一个是action.sh
,第二个是我们必须通过Oozie启动的文件jar
这对我来说很有效,我认为这是一个更好的解决方案,因为即使您有一些问题,错误的输出也是非常清楚的,您可以更正代码或作业
我希望能对别人有所帮助 我也遇到了类似的问题,结果是jar路径
${nameNode}/user/${wf:user()}//prova_spark/simpleap1.jar
shuld是您的本地路径。
您不需要将spark jar放入HDFS,只需在linux系统上使用它即可。
该解决方案解决了我的问题,因此我将其发布在这里。不幸的是,它不起作用!我遵循了这些步骤,现在的问题是:org.apache.oozie.action.hadoop.SparkMain.loadActionConf()Lorg/apache/hadoop/conf/Configuration代码>
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"
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
}