首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Oozie spark操作错误:主类[org.apache.oozie.action.hadoop.SparkMain],退出代码[1]

Oozie spark操作错误:主类[org.apache.oozie.action.hadoop.SparkMain],退出代码[1]
EN

Stack Overflow用户
提问于 2016-02-19 21:04:51
回答 1查看 6.9K关注 0票数 1

我目前正在设置一个使用Spark操作的Oozie工作流。我使用的Spark代码工作正常,在本地和纱线上都进行了测试。然而,当我将它作为一个Oozie工作流运行时,我得到了以下错误:

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

在阅读了这个错误之后,我发现最常见的原因是Oozie sharelibs的问题。我已经将所有Spark jar文件添加到hdfs上的Oozie /user/ Oozie /share/lib/spark中,重新启动Oozie并运行sudo -u oozie oozie admin -oozie http://192.168.26.130:11000/oozie -sharelibupdate以确保sharelibs被正确更新。不幸的是,所有这些都没有阻止错误的发生。

我的工作流程如下:

代码语言:javascript
复制
<workflow-app xmlns='uri:oozie:workflow:0.4' name='SparkBulkLoad'>
    <start to = 'bulk-load-node'/>
    <action name = 'bulk-load-node'>
        <spark xmlns="uri:oozie:spark-action:0.1">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <master>yarn</master>
            <mode>client</mode>
            <name>BulkLoader</name>
            <jar>${nameNode}/user/spark-test/BulkLoader.py</jar>
            <spark-opts>
                --num-executors 3 --executor-cores 1 --executor-memory 512m --driver-memory 512m\
            </spark-opts>
        </spark>
        <ok to = 'end'/>
        <error to = 'fail'/>
    </action>
    <kill name = 'fail'>
        <message>
            Error occurred while bulk loading files
        </message>
    </kill>
    <end name = 'end'/>
</workflow-app>

job.properties如下:

代码语言:javascript
复制
nameNode=hdfs://192.168.26.130:8020
jobTracker=http://192.168.26.130:8050
queueName=spark
oozie.use.system.libpath=true

oozie.wf.application.path=${nameNode}/user/spark-test/workflow.xml
workflowAppUri=${nameNode}/user/spark-test/BulkLoader.py

任何建议都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2019-04-12 21:17:06

我还指定了libpath

代码语言:javascript
复制
oozie.libpath=<path>/oozie/share/lib/lib_<timestamp>

它是您在编写命令后看到的值

代码语言:javascript
复制
sudo -u oozie oozie admin -oozie http://192.168.26.130:11000/oozie -sharelibupdate

示例:

代码语言:javascript
复制
[ShareLib update status]
    sharelibDirOld = hdfs://nameservice1/user/oozie/share/lib/lib_20190328034943
    host = http://vghd08hr.dc-ratingen.de:11000/oozie
    sharelibDirNew = hdfs://nameservice1/user/oozie/share/lib/lib_20190328034943
    status = Successful

可选:还可以在Cloudera文件夹中指定纱线配置:

代码语言:javascript
复制
oozie.launcher.yarn.app.mapreduce.am.env=/opt/SP/apps/cloudera/parcels/SPARK2-2.2.0.cloudera4-1.cdh5.13.3.p0.603055/lib/spark2

,但是,这可能不能解决问题。我的另一个提示是,如果你使用的是Spark 1.x,那么这个文件夹在你的oozie sharelib文件夹中是必要的

代码语言:javascript
复制
/user/oozie/share/lib/lib_20190328034943/spark2/oozie-sharelib-spark.jar

如果你将它复制到你的spark2文件夹中,它会解决“缺少SparkMain”的问题,但会要求其他依赖项(在我的环境中这可能是一个问题)。我认为值得一试,所以复制并粘贴lib,运行您的作业,并查看日志。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35506060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档