本节笔记比较少,上方链接已说明原因

为什么要有oozie

说的通俗一点比如说厨房的流程很多。炒饭->装饭->送饭。如果按照时间规定什么时候作什么事情,那么遇到一个突发情况 比如说客人增多,就会出现供不应求的情况,就乱套了。如果能有一个人去监督帮我去监控,通知,控制好这个流程 情况就得以解决。 oozie就类似监督人,一个完整的数据分析系统通常是由大量的任务单元组成的,shell脚本,Java程序 MR程序,hive脚本等等,各个单元之前存在前后依赖关系。为了很好的组织这样复杂的执行计划,需要一个工作流调度系统来调节执行。

简单的工作流调度:Liunx的crontab来定义

Linux crontab是用来定期执行程序的命令。 当安装完成操作系统之后,默认便会启动此任务调度命令。 crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

复杂的工作流调度:Oozie、Azakaban等

为什么要使用oozie

为了管理不同类型的作业在Hadoop系统中的处理

用户同时保存着整个工作流程,此外也有特定的工作频率

主要概念

workflow:工作流,由我们处理的每个工作组成,进行需求的流式处理,执行分支多节点或合并多分点为一个分支。 coordinator:协调器,可以理解为工作流的协调器,可以将多个工作流协调成一个工作流来处理。定时触发Workflow bundle:将一堆coordinator进行汇总处理。绑定多个Coordinator 总结:workflow是对要进行的顺序化工作的抽象,coordinator是对要进行的顺序化的workflow的抽象,bundle是对一堆coordiantor的抽象。层级关系层层包裹。如图

img

oozie的特点

1.客户端API以及命令行界面可以用来启动,控制和监视Java应用程序作业

2.使用其web服务的API可以从任何位置控制作业

3.有规定执行这些计划定期来运行作业

4.有规定作业完成后可发送电子邮件通知

img