【问题标题】:Can Oozie shell action create output file on HDFS?Oozie shell 动作可以在 HDFS 上创建输出文件吗?
【发布时间】:2015-04-01 19:15:59
【问题描述】:

我是 Oozie 和 Hadoop 的新手。我想问我是否可以在 Oozie 中运行 shell 操作并将输出存储到 Hadoop 分布式文件系统上的文件中。

【问题讨论】:

  • 你可以将输出直接放到 shell 脚本中的 hdfs
  • 我试图这样做,但我做不到。到目前为止我看到的所有教程都只使用标准输出而不是创建文件。能否请您参考一些将输出输出到 hdfs 的示例?
  • 您尝试将结果复制到 hdfs 吗?
  • 你的意思是使用 hadoop fs -copyFromLocal 命令?我已经尝试过了,但也没有成功。
  • @KSNidhin 我们怎样才能把输出直接放到hdfs。可以举个例子吗

标签: hadoop oozie


【解决方案1】:

当然 - 使用以下作为 shell 操作的脚本:

#!/bin/bash

echo "foo" > output.txt
hdfs dfs -moveFromLocal output.txt /your/path/in/hdfs

【讨论】:

  • 那么 Hadoop 命令不能在 oozie 运行的节点上运行吗?您可以将hostname 作为脚本的第二行以假脱机运行 oozie 运行 shell 操作的主机名,然后手动登录到该节点并检查所有设置是否正确。
  • 我已经配置了同一个节点来运行 Hadoop 和 Oozie。 hadoop 命令是 hadoop fs -moveFromLocal 。如果我在本地运行该脚本可以正常工作,但在提交给 Oozie 时它会显示错误的命令或文件名。
  • 您如何定义您的 Oozie 工作流程?手动 XML,通过 Oozie UI 还是通过 Hue?在任何情况下,请确保您的 shell 脚本已上传到 Oozie 工作区,并且在 Shell commnad/exec 部分和文件下都有提及。
  • 我已经修改了 Oozie 示例提供的 shell 操作工作流。我已经在 Oozie workdpace 中上传了 shell 脚本,它在 command/exec 部分下被提及。这是 workflow.xml 的快照:' ${EXEC}'
  • 在你的 workflow.xml 中添加一个<file>${EXEC}</file> 元素;这是假设您将 ${EXEC} 设置为指向您的 shell 脚本。
【解决方案2】:

我遇到了同样的问题,这解决了它。您必须添加 HADOOP_USER_NAME 环境变量。 Go through this once

【讨论】:

  • 不要将链接发布为答案,而是添加一些文本来解释此答案如何帮助 OP 解决当前问题。谢谢
猜你喜欢
  • 1970-01-01
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多