Hadoop Streaming Job 在 OOzie 中不起作用
Posted
技术标签:
【中文标题】Hadoop Streaming Job 在 OOzie 中不起作用【英文标题】:Hadoop Streaming Job not working in OOzie 【发布时间】:2017-06-12 05:09:47 【问题描述】:我正在尝试编写一个仅映射简单的 hadoop 流作业,从 hdfs 读取数据并将其推送到 vertica。
我写了一个shell脚本如下
./vsql -c "copy $TABLE from stdin delimiter E'\t' direct null '\\N';" -U $DBUSER -w $DBPWD -h $DBHOST -p $DBPORT
我已经创建了 oozie 工作流程:
<action name="loadToVertica">
<map-reduce>
<job-tracker>$jobTracker</job-tracker>
<name-node>$nameNode</name-node>
<prepare>
<delete path="$nameNode/user/$USER/output/$exportDataDate"/>
</prepare>
<streaming>
<mapper>shell export.sh</mapper>
</streaming>
<configuration>
<property>
<name>oozie.libpath</name>
<value>$wfsBasePath/libs</value>
</property>
<property>
<name>mapred.input.dir</name>
<value>$nameNode/user/$USER$/exportDataDate</value>
</property>
<property>
<name>mapred.output.dir</name>
<value>$nameNode/user/$USER/output/$exportDataDate</value>
</property>
<property>
<name>mapred.reduce.tasks</name>
<value>0</value>
</property>
</configuration>
<file>$wfsBasePath/libs/$STREAMING_JAR_PATH#$STREAMING_JAR_PATH</file>
<file>$wfsBasePath/libs/oozie-sharelib-streaming-4.2.0.2.5.3.0-37.jar#oozie-sharelib-streaming-4.2.0.2.5.3.0-37.jar</file>
<file>$wfsBasePath/scripts/export.sh#export.sh</file>
<file>$wfsBasePath/config/vsql#vsql</file>
</map-reduce>
<ok to="end"/>
<error to="end"/>
</action>
当我运行这个时,作业的状态是失败/终止,没有任何错误消息。
【问题讨论】:
日志是怎么回事?尝试先在没有 Oozie 的情况下执行它。 没有 oozie 它运行良好。数据已成功加载到 Vertica @FieryCat 有时可能与文件夹权限有关。日志会给出答案:cd /var/log/oozie/; ls
或 oozie job -oozie $OOZIE_URL -info job id
在纱线日志@FieryCat 中找不到任何错误
那么,请先通过以下方式启用它们:community.cloudera.com/t5/Batch-Processing-and-Workflow/… 或 ***.com/questions/32397725/…
【参考方案1】:
在 #!/bin/sh 之后添加 -e 帮助我追踪实际错误是什么。
在脚本中添加-e选项后,日志中有错误代码。
在这之后第一行看起来像:
#!/bin/sh -e
【讨论】:
以上是关于Hadoop Streaming Job 在 OOzie 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
第6课:Spark Streaming源码解读之Job动态生成和深度思考