Oozie工作流程失败 - Mkdirs无法创建文件

时间:2016-02-22 11:10:59

标签: hadoop apache-spark oozie

我正在使用Oozie工作流来运行pyspark脚本,而且我遇到了一个我无法弄清楚的错误。

运行工作流程(本地或YARN)时,会在Spark启动之前运行MapReduce作业。几分钟后,任务失败(在Spark操作之前),挖掘日志会显示以下错误:

java.io.IOException: Mkdirs failed to create file:/home/oozie/oozie-oozi/0000011-160222043656138-oozie-oozi-W/bulk-load-node--spark/output/_temporary/1/_temporary/attempt_1456129482428_0003_m_000000_2 (exists=false, cwd=file:/hadoop/yarn/local/usercache/root/appcache/application_1456129482428_0003/container_e68_1456129482428_0003_01_000004)

(长篇道歉)

没有其他明显的错误。我没有直接创建这个文件夹(我假设它的名称是用于临时存储MapReduce作业)。我可以使用mkdir -p /home/oozie/blah...从命令行创建此文件夹。它似乎不是一个权限问题,因为将该文件夹设置为777没有任何区别。我还为该文件夹的oozie,yarn和mapred用户添加了默认ACL,因此我几乎排除了权限问题。还值得注意的是,在作业失败后,错误中列出的工作目录不存在。

经过一些谷歌搜索后,我发现类似的问题在Mac系统上很常见,但我在CentOS上运行。我正在运行HDP 2.3 VM Sandbox,它是一个单节点'集群'。

我的workflow.xml如下:

<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>file:///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如下:

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=file:///test/workflow.xml

如果有必要,我可以发布堆栈跟踪的任何其他部分。我感谢任何帮助。

更新1

检查完Spark History Server后,我可以确认实际的Spark操作没有启动 - 没有提交新的Spark应用程序。

0 个答案:

没有答案