定时任务调度——oozie总结

定时任务调度——oozie总结,第1张

(翻译自 官网 )

Oozie是一个用于管理Apache Hadoop作业的工作流调度程序系统。

Oozie Workflow job是由多个Action组成的有向无环图(DAG)。

Oozie Coordinator job是根据时间(频率)和数据可用性触发的可重复执行的Oozie Workflow job(简单讲就是根据时间或数据条件,规划workflow的执行)。

Oozie与Hadoop技术栈的项目集成,支持多种类型的Hadoop作业(例如Java map-reduce,Streaming map-reduce,Pig,Hive,Sqoop和Distcp,Spark)以及系统特定的工作(例如Java程序和shell脚本)。

Oozie是一个可水平扩展,可靠和可使用扩展插件(scalable, reliable and extensible)的系统。

这里使用cdh虚拟机自带的oozie examples中的例子,执行hdfs dfs -put examples examples,将examples上传到hdfs。

打开apps/shell/ 可以看到job.properties和workflow.xml两个文件,在workflow.xml中定义action和workflow,在job.properties中定义各种变量。示例如下:

job.properties

workflow.xml

可以看到这里定义了一个shell workflow,它的DAG如下:

首先是start,end,kill三个控制节点,分别指定了workflow开始时,结束时,kill时的行为。

start指向了一个名为shell-node的action,该action执行了ehco命令,并使用capture-output获取标准输出。如果执行成功,则进入decision node check-output如果输出结果正确则顺利结束,否则输出错误信息。

然后使用以下命令测试(这里的config是使用的是本地文件)

oozie job -oozie http://quickstart.cloudera:11000/oozie -config ~/oozie-examples/examples/apps/shell/ job.properties -dryrun

如果成功,会显示OK

然后使用一下命令执行该workflow

oozie job -oozie http://quickstart.cloudera:11000/oozie -config ~/oozie-examples/examples/apps/shell/ job.properties -run

最后,使用oozie job -oozie http://quickstart.cloudera:11000/oozie -info workflowID查看任务运行状态

也可以在hue中或者oozie web控制台中查看任务运行状态。

数据准备:使用了权力与荣耀2017 ios的addcash的数据,test.hql(插入一条数据)

首先需要上传hive-site.xml到hdfs,Oozie需要通过该文件找到Hive Metastore,另外上传写好的hql文件到hdfs。然后向workflow中加入hive script action。并按图中的配置设置好hive脚本和hive-site.xml。保存即可。

写workflow.xml和使用hue配置action,两者是等价的。

最后使用coordinator设定每小时执行一次。也可以设置输入,当指定位置有数据时才开始执行;设置输出,将数据输出到指定位置。

如果coordinator设定的开始时间比当前时间早的话,会先将开始时间和当前时间之间应该执行的workflow全部执行一遍。

参考文献:

Oozie官方文档

Hue官方文档

cloudera community

作业调度程序是管理任务的系统,作业调度程序的主要功能是根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源,然后再将新创建的进程插入就绪队列,准备执行。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11609679.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存