【问题标题】:Oozie job configuration app directory not found on HDFS在 HDFS 上找不到 Oozie 作业配置应用程序目录
【发布时间】:2012-10-03 19:25:50
【问题描述】:

我在我的 Linux 机器上安装了 Cloudera 的伪分布式版本,并成功运行了一些简单的 MapReduce 示例。但是,我试图让 Oozie 工作,并且在尝试执行简单的工作流程时收到的错误完全让我感到困惑:

tim@phocion:~$ oozie version
Oozie client build version: 3.1.3-cdh4.0.1

根据文档将预打包的示例复制到 HDFS 并执行:

tim@phocion:~$ oozie job -oozie http://phocion:11000/oozie -config /user/tim/examples/apps/map-reduce/job.properties -run
Error: E0504 : E0504: App directory [hdfs://phocion:8020/user/tim/examples/apps/map-reduce] does not exist

检查文件是否存在:

tim@phocion:~$ hdfs dfs -ls /user/tim/examples/apps/map-reduce
Found 3 items
-rwxr-xr-x   1 tim tim        995 2012-10-03 14:47 /user/tim/examples/apps/map-reduce/job.properties
drwxrwxr-x   - tim tim       4096 2012-10-03 14:47 /user/tim/examples/apps/map-reduce/lib
-rwxr-xr-x   1 tim tim       2559 2012-10-03 14:47 /user/tim/examples/apps/map-reduce/workflow.xml

确实如此。我可以连接到 phocion:8020 吗?

tim@phocion:~$ telnet phocion 8020
Trying 127.0.1.1...
Connected to phocion.
Escape character is '^]'.

我可以。所以,基本上,我完全不知道这个错误试图告诉我什么——这个文件夹确实存在。我假设错误太模糊,无法完全传达问题所在,但我几乎没有发现任何东西可以为我指明正确的方向。

我也可以使用其他 3rd 方教程复制此错误。

花了很多时间翻阅配置文件,以至于不想再看电脑了。也许我在这里考虑了这个问题,但任何帮助将不胜感激。

编辑:添加完整的 job.properties(与默认值相差不大):

nameNode=hdfs://phocion:8020
jobTracker=phocion:8021
queueName=default
examplesRoot=examples
oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/map-reduce
outputDir=map-reduce

更多编辑:当文件夹不存在以及将 if 放回 hdfs 后,我得到了同样的错误。最后的想法是它的权限问题, chmod 777 仍然得到同样的错误。命令行上传递的完整 HDFS 路径不能解决问题。在 oozie 甚至 root 帐户下运行它都不起作用:

tim@phocion:~$ oozie job -oozie http://phocion:11000/oozie -run -config /home/tim/examples/apps/map-reduce/job.properties -Doozie.wf.application.path=hdfs://phocion:8020/user/tim/examples/apps/map-reduce
Error: E0504 : E0504: App directory [hdfs://phocion:8020/user/tim/examples/apps/map-reduce] does not exist
tim@phocion:~$ hdfs dfs -put examples/ /user/tim/
12/10/04 13:26:43 INFO util.NativeCodeLoader: Loaded the native-hadoop library
tim@phocion:~$ oozie job -oozie http://phocion:11000/oozie -run -config /home/tim/examples/apps/map-reduce/job.properties -Doozie.wf.application.path=hdfs://phocion:8020/user/tim/examples/apps/map-reduce
Error: E0504 : E0504: App directory [hdfs://phocion:8020/user/tim/examples/apps/map-reduce] does not exist
tim@phocion:~$ hdfs dfs -chmod -R 777 /user/tim/examples/
12/10/04 13:28:16 INFO util.NativeCodeLoader: Loaded the native-hadoop library
tim@phocion:~$ oozie job -oozie http://phocion:11000/oozie -run -config /home/tim/examples/apps/map-reduce/job.properties -Doozie.wf.application.path=hdfs://phocion:8020/user/tim/examples/apps/map-reduce
Error: E0504 : E0504: App directory [hdfs://phocion:8020/user/tim/examples/apps/map-reduce] does not exist
tim@phocion:~$ sudo -u oozie oozie job -oozie http://phocion:11000/oozie -run -config /home/tim/examples/apps/map-reduce/job.properties -Doozie.wf.application.path=hdfs://phocion:8020/user/tim/examples/apps/map-reduce
[sudo] password for tim: 
Error: E0504 : E0504: App directory [hdfs://phocion:8020/user/tim/examples/apps/map-reduce] does not exist
tim@phocion:~$ sudo -u root oozie job -oozie http://phocion:11000/oozie -run -config /home/tim/examples/apps/map-reduce/job.properties -Doozie.wf.application.path=hdfs://phocion:8020/user/tim/examples/apps/map-reduce
Error: E0504 : E0504: App directory [hdfs://phocion:8020/user/tim/examples/apps/map-reduce] does not exist

这个命令理论上应该有效吗?

tim@phocion:~$ hdfs dfs -ls hdfs://phocion:8020/user/tim/examples/apps/map-reduce
ls: `hdfs://phocion:8020/user/tim/examples/apps/map-reduce': No such file or directory

这会在执行 oozie 命令后显示在 hadoop-hdfs 日志中:

2012-10-04 13:50:00,152 INFO org.apache.hadoop.hdfs.server.namenode.FSEditLog: Starting log segment at 113297
2012-10-04 13:50:00,874 INFO org.apache.hadoop.hdfs.server.namenode.TransferFsImage: Opening connection to http://localhost.localdomain:50090/getimage?getimage=1&txid=113296&storageInfo=-40:2092007576:0:cluster8
2012-10-04 13:50:00,875 ERROR org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:hdfs (auth:SIMPLE) cause:java.net.ConnectException: Connection refused
2012-10-04 13:50:00,876 WARN org.mortbay.log: /getimage: java.io.IOException: GetImage failed. java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:529)
        at java.net.Socket.connect(Socket.java:478)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:395)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:530)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:234)
        at sun.net.www.http.HttpClient.New(HttpClient.java:307)
        at sun.net.www.http.HttpClient.New(HttpClient.java:324)
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)

【问题讨论】:

  • archive.cloudera.com/cdh4/cdh/4/oozie/… 的 Oozie 文档的“运行示例”部分所述,您是否可以尝试在 CLI 中将正确的本地路径传递给 -config 而不是 HDFS 样式的路径? -config 期望属性是本地可用的可配置文件,而不是 HDFS 内部。
  • @Harsh-J 感谢您的帮助。我让 -config 指向 HDFS 之外的配置文件。相同的错误:tim@phocion:~$ oozie job -oozie phocion:11000/oozie -config /home/tim/examples/apps/map-reduce/job.properties -run 错误:E0504:E0504:应用程序目录 [hdfs://phocion :8020/user/tim/examples/apps/map-reduce] 不存在
  • 您能否检查 Hadoop 配置 (/etc/hadoop/conf/*-site.xml) 的以下属性:fs.defaultFS >> 这是您未明确提及“hdfs://host:port/home”时使用的前缀/dir/”或“hdfs://HA_alias/home/dir/”
  • 顺便说一句,你应该检查你的边缘节点上的配置(你正在运行 HDFS 命令行的那个),但也应该检查运行 Oozie 服务器的节点上的配置,如果不同的话,还有 all 可能正在运行 Oozie 操作的集群节点...

标签: hadoop workflow hdfs cloudera oozie


【解决方案1】:

除了 HarshJ 的评论,检查你的错误信息:

Error: E0504 : E0504: App directory [hdfs://phocion:8020/user/tim/examples/apps/demo] does not exist

以及您提供的 hadoop fs -ls 列表:

/user/tim/examples/apps/map-reduce/

和玩点区别:

/user/tim/examples/apps/demo
/user/tim/examples/apps/map-reduce/

尝试如下配置:

oozie.wf.application.path=/user/tim/examples/apps/map-reduce

【讨论】:

  • 感谢您的回复。我的错 - 我正在测试两个不同的示例并将输出混合粘贴在这里。我在 map-reduce/ 和 demo/ 中都遇到了错误,而且它们都存在。我还尝试按照您对许多不同路径的建议修改应用程序路径 - HDFS 和非 HDFS。同样的错误。
  • 您可以将 job.properties 文件的内容粘贴到您的原始问题中吗?你试过oozie job -run -Doozie.wf.application.path=/user/tim/examples/apps/map-reduce
  • 通过命令行传入参数的相同错误:tim@phocion:~$ oozie job -oozie phocion:11000/oozie -run -Doozie.wf.application.path=/user/tim/examples/apps/ map-reduce -config /home/tim/examples/apps/map-reduce/job.properties 错误:E0504:E0504:应用目录 [/user/tim/examples/apps/map-reduce] 不存在
  • 我知道我的 oozie 版本,我需要完全限定应用程序路径,你试过oozie job -run -Doozie.wf.application.path=hdfs://phocion:8020/user/tim/examples/apps/map-reduce ...
  • 感谢 Chris - 已在上面更新。在命令行中传入完整的 HDFS 路径会产生相同的错误。但是,我无法通过 hdfs 在完整的 HDFS 路径上执行“ls”。
【解决方案2】:

我遇到了同样的问题,并通过导出正确的 oozie url 解决了它。

要导出,您应该使用以下命令

export OOZIE_URL=http://someip:11000/oozie

要获取此 oozie url,您需要使用 hue 连接集群并导航到 Workflows,您可以在其中找到名为 oozie 的选项卡。在这里面你应该看到gauges,其中列出了很多属性。查找属性 oozie.servers

【讨论】:

    【解决方案3】:

    您需要做的是将示例文件夹-copyFromLocal 到作业配置中指定的位置。

    【讨论】:

      猜你喜欢
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多