使用 oozie 自动化 shell 脚本
Posted
技术标签:
【中文标题】使用 oozie 自动化 shell 脚本【英文标题】:automate the shell script using oozie 【发布时间】:2018-04-16 07:48:49 【问题描述】:我必须一次又一次地对来自水槽的传入数据运行相同的脚本,所以我想自动化它。那么如何在一定的时间间隔内使用 Oozie 自动化一个 pig 脚本呢?
【问题讨论】:
数据到达 hdfs 了吗?多常。你只写完整的文件吗?你见过github.com/YahooArchive/oozie/wiki/Oozie-Coord-Use-Cases 是的,数据正在到达 hdfs。 【参考方案1】:无耻抄袭https://github.com/YahooArchive/oozie/wiki/Oozie-Coord-Use-Cases
当数据文件可用时触发协调器作业 您可以为 Coordinator Job 定义输入数据依赖关系。在创建输入文件之前,您的作业不会运行。
eg. hdfs://localhost:9000/tmp/revenue_feed/2010/06/01/03/trigger.dat
$ cat coordinator.xml
<coordinator-app name="MY_APP" frequency="1440" start="2009-02-01T00:00Z" end="2009-02-07T00:00Z" timezone="UTC" xmlns="uri:oozie:coordinator:0.1">
<datasets>
<dataset name="input1" frequency="60" initial-instance="2009-01-01T00:00Z" timezone="UTC">
<uri-template>hdfs://localhost:9000/tmp/revenue_feed/$YEAR/$MONTH/$DAY/$HOUR</uri-template>
<done-flag>trigger.dat</done-flag>
</dataset>
</datasets>
<input-events>
<data-in name="coordInput1" dataset="input1">
<start-instance>$coord:current(-23)</start-instance>
<end-instance>$coord:current(0)</end-instance>
</data-in>
</input-events>
<action>
<workflow>
<app-path>hdfs://localhost:9000/tmp/workflows</app-path>
</workflow>
</action>
</coordinator-app>
【讨论】:
有两种方法可以实现这一点
-
您可以创建一个带有必要操作的 Oozie 工作流,并编写一个 shellscript 来触发 Oozie,并使用 cron 作业对其进行调度
设置 cron 作业的命令:
crontab -e
编写 shell 脚本的好处是,您可以在某些作业失败时设置失败电子邮件通知。
-
编写带有开始和结束时间的 Oozie 作业
【讨论】:
以上是关于使用 oozie 自动化 shell 脚本的主要内容,如果未能解决你的问题,请参考以下文章
使用“添加文件”部分(shell 脚本)时,Hortonworks Hue Oozie 流式传输作业失败
sqoop 作业 shell 脚本在 oozie 中并行执行
oozie的shell-action中加入hive脚本命令启动执行shell同时操作hive,抛异常Container killed on request. Exit code is 143 Cont