我为shell动作创建了一个oozie工作流程。下面是简单的oozie shell动作。我将Shell脚本放在工作流lib文件夹中。这个shell脚本正在做以下事情:
1)从s3存储桶中获取加密的json并将它们放入本地 夹
2)解密json并将其放在一个hdfs位置。
3)对于aws连接和解密json,它使用一些键,即 pem和pub keys。
4)我将这些密钥与shell脚本一起放在lib文件夹中。
<workflow-app xmlns="uri:oozie:workflow:0.5" name="LaborIngestion">
<start to='LaborIngestion'/>
<action name='LaborIngestion'>
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<exec>pullDataS3.sh</exec>
</shell>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>LaborHrExtract workflow failed, error message[${wf:errorMessage(wf:lastErrorNode())}]
</message>
</kill>
<end name="end"/>
</workflow-app>
我面临的问题是,此工作流程在7-8秒内以成功状态结束,但是获取任何文件。通常,当我从命令提示符运行此脚本时,大约需要2-3分钟。 我不确定我是否正确地放置了解密密钥和连接密钥。如果这是将钥匙放入oozie的正确方法,请建议我。
此外,我使用相同的工作流程运行了一个带有hadoop命令的简单脚本,并且运行正常。
hadoop fs -mkdir / com / kapil / kumar
答案 0 :(得分:0)
在
之后的工作流程中<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<exec>pullDataS3.sh</exec>
您需要提供shell脚本位置的HDFS
路径。
然后它应该工作。 像下面的东西
<file>/user/xxxxx/oozie/import/lib/pullDataS3.sh#pullDataS3.sh</file>