创建目录时出现 Oozie shell 操作问题

Posted

技术标签:

【中文标题】创建目录时出现 Oozie shell 操作问题【英文标题】:Oozie shell action issue while creating directories 【发布时间】:2016-12-27 10:24:39 【问题描述】:

我无法从 Oozie 工作流执行的 shell 脚本中添加/删除 HDFS 上的任何文件或目录。 用户名是“scitest”,我尝试编辑/添加/删除的 hdfs 路径是 /user/scitest/.

在 shell 脚本中,我试图从路径 /user/scitest/ 中删除名为 test123456 的文件夹。

---------------来自 oozie 日志的错误------

429737-oozie-oozi-W@shell-node] Launcher ERROR, reason: Main class [org.apache.oozie.action.hadoop.ShellMain], exit code [1]
2016-12-27 05:04:25,553  INFO ActionEndXCommand:520 - SERVER[vscihadoopvm2.manhdev.com] USER[scitest] GROUP[-] TOKEN[] APP[shell.workflow] JOB[0000041-161208225429737-oozie-oozi-W] ACTION[0000041-161208225429737-oozie-oozi-W@shell-node] ERROR is considered as FAILED for SLA

---------shell-script(sample.sh) 内容----------

#!/bin/bash
echo "`date` hi" > output.log
hadoop fs -mkdir test123456

--------job.properties---------

nameNode=hdfs://vscihadoopvm1.manhdev.com:8020
jobTracker=vscihadoopvm2.manhdev.com:8050
master=yarn-cluster
#user.name=yarn
queueName=default
examplesRoot=oozietest
oozie.use.system.libpath=true
oozie.wf.application.path=$nameNode/user/$user.name/$examplesRoot

---workflow.xml---

<?xml version="1.0" encoding="UTF-8"?>
<workflow-app xmlns="uri:oozie:workflow:0.5" name="shell.workflow">
<start to="shell-node"/>
  <action name="shell-node">
    <shell xmlns="uri:oozie:shell-action:0.3">
      <job-tracker>$jobTracker</job-tracker>
      <name-node>$nameNode</name-node>
      <configuration>
        <property>
          <name>mapred.job.queue.name</name>
          <value>$queueName</value>
        </property>
      </configuration>
      <exec>sample.sh</exec>
      <file>sample.sh#sample.sh</file>
    </shell>
    <ok to="end"/>
    <error to="kill"/>
  </action>
  <kill name="kill">
    <message>Error in Shell.Please refer the Oozie Logs</message>
  </kill>
  <end name="end"/>
</workflow-app>

【问题讨论】:

错误消息似乎与我无关。我能够执行脚本。还要在 workflow.xml 中的 shell 操作的 file 标记中提供完整路径。谢谢。 @YoungHobbit,感谢您的回复.. @YoungHobbit ,感谢您的回复..我尝试添加 shell 脚本的完整 hdfs 路径但没有帮助.. /user/scitest/oozietest/sample.sh# sample.sh 但没有帮助...给出同样的错误...可能是权限问题.. &lt;file&gt;$nameNode/user/scitest/oozietest/sample.sh#sample.sh&lt;/file&gt;。另请检查日志中的错误消息。它是否与 Mapper 作业一起启动。如果是,则将日志检查到已启动的作业中。谢谢。 @YoungHobbit,我尝试将名称节点添加到文件位置,但没有帮助..我尝试在 Cloudera 上运行相同的代码,但我面临同样的问题......唯一的事情我改为在cloudera上运行是将resourcemanager端口修改为8032和user.name = cloudera ...我仍然无法删除或添加任何文件夹...我检查了来自8088 http端口的日志并看到oozie mr作业成功运行...由于未创建文件夹,我缺少一些基本步骤...您能帮忙吗? 【参考方案1】:

@Abhiroy,如果您可以检查您的 oozie 操作正在执行的用户,也许会更好。您可以在示例 shell 脚本中简单地放置不带引号的“id”并运行工作流程。然后,您可以跟踪 oozie 作业日志以查看 oozie 正在使用的示例脚本的容器执行器。如果您有任何权限问题,我们可以开始追踪。

【讨论】:

以上是关于创建目录时出现 Oozie shell 操作问题的主要内容,如果未能解决你的问题,请参考以下文章

运行 oozie fork 时出现 LeaseExpiredException

尝试在 Hue 中运行工作流时出现 Oozie 错误

Oozie - 运行 sqoop 时出现异常:无法加载数据库驱动程序类:com.mysql.jdbc.Driver

无法在oozie中运行shell(错误= 2,没有这样的文件或目录)

sqoop从hive导入数据到mysql时出现主键冲突

Oozie shell 操作失败