Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark OOzie Spark:代码101错误_Apache Spark_Oozie - Fatal编程技术网

Apache spark OOzie Spark:代码101错误

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[

我在理解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[${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
    
    }