使用“添加文件”部分(shell 脚本)时,Hortonworks Hue Oozie 流式传输作业失败

Posted

技术标签:

【中文标题】使用“添加文件”部分(shell 脚本)时,Hortonworks Hue Oozie 流式传输作业失败【英文标题】:Hortonworks Hue Oozie Streaming Job Fails when using "Add File" section (shells scripts) 【发布时间】:2013-12-18 07:02:29 【问题描述】:

我已经安装了 HDP 2.x 和色相。 (2 台主机)

我需要解决这个问题,因为我是 oozie 工作流程的新手。 我在这里遵循了示例:http://www.oraclealchemist.com/news/hadoop-streaming-hue-oozie-workflows-hive/ 如果我仅在各自路径的所有主机中都有映射器和减速器,它就可以完美地工作。我看到 oozie 的 ambari-qa 烟雾测试很好,但是当我从 Hue UI 为 Oozie 提交流式作业时,映射器和减速器在其中执行字数统计(词频)的 shell 脚本,我想使用“添加文件”(-在 Oozie 工作流编辑器中的 hadoop 命令行中的文件)部分,并将映射器和化简器上传到 HDFS。在此更改并提交此作业后,出现错误。对于地图任务的所有尝试,我都会收到以下错误:

2013-12-16 19:21:24,278 错误 [主要] org.apache.hadoop.streaming.PipeMapRed:配置异常 java.io.IOException:无法运行程序 “/hadoop/yarn/local/usercache/root/appcache/application_1387201627160_0006/container_1387201627160_0006_01_000002/./maptf.sh”: java.io.IOException: error=2, No such file or directory

这意味着它无法在 oozie/mapred/yarn 将创建文件的路径中找到映射器和减速器。我有任何 oozie 配置和工作流程问题吗? (通过电子邮件记录:sandeepboda91083@gmail.com)

在 HDFS 中,我在 root 用户下正确设置了所有路径和文件。

注意:我可以在没有 oozie 的情况下运行流式作业:

cd /root/mrtest/
ls
-rwxrwxrwx 1 root root 235 Dec 11 11:37 maptf.sh
-rwxrwxrwx 1 root root 273 Dec 11 11:37 redtf.sh

hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming-2.2.0.2.0.6.0-76.jar -D stream.num.map.output.key.fields=1 -input crane_in1 -output crane_out2 -file ./maptf.sh -mapper maptf.sh -file ./redtf.sh -reducer redtf.sh

我似乎无法在此处附加日志。请给我邮寄文件和日志。

【问题讨论】:

【参考方案1】:

这可能与Hue list上的这些用户的问题相同。

如果您使用文件浏览器编辑文件,它们可能会因为一些非 Unix 新行而损坏。您应该直接上传它们而不是修改它们或使用更新版本的Hue(在撰写本文时为 3.5)。

【讨论】:

是的,我在 Windows 记事本/写字板中编辑了 shell 脚本,并通过“添加文件”上传方法上传。这意味着对于我看到附加的 \r\n 行的每一端,这会导致错误。我需要进行 dos2unix 转换并使其工作。但是为什么错误信息具有误导性? “没有这样的文件或目录”

以上是关于使用“添加文件”部分(shell 脚本)时,Hortonworks Hue Oozie 流式传输作业失败的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Shell 脚本中建立远程连接时捕获错误

Linux系统编程-Shell脚本基本使用(变量运算符语句等)

从 Xcode 运行时,Shell 脚本不会完全执行

powershell脚本案例:当有人使用公共账户登陆服务器时,发送邮件到teams,shell脚本

powershell脚本案例:当有人使用公共账户登陆服务器时,发送邮件到teams,shell脚本

shell脚本while循环语句