工作流调度引擎——Oozie

一、什么是Oozie

工作流调度引擎——Oozie_第1张图片

Oozie由Cloudera公司贡献给Apache的基于工作流引擎的开源框架,用于Hadoop平台的工作流调度。由Oozie Client和Oozie Server两个组件构成,Oozie Server运行于Java Servlet(Tomcat)容器中的web程序。

1、组件特性

1)Oozie不仅实现多个MR工作流调度,也可以将多种异构程序合成一个工作流。使用Oozie时,若前一个任务执行失败,后一个任务就不会被调度。

2)Oozie工作流是一个DAG,当需要执行多个关联MR任务时,只需将MP执行顺序写入workflow.xml,然后由Oozie提交任务,托管此任务流。

3)Oozie通过控制流节点(Control Flow Nodes)和动作节点(Action Nodes)控制流节点负责控制流程的开始和结束,以及执行路径(如:fork、join)。

2、Oozie架构

工作流调度引擎——Oozie_第2张图片

 

左侧:Oozie通过Tomcat Http Server对外提供Java API、REST API、CLI(终端)、Web接口(Hue),产生的数据存储在Oozie object database上;

中间:Oozie三层结构Workflow、Coordinator、Bundle Job;

右侧:Oozie的Coordinator Engine监控基于(时间触发器)Time-based triggers和HDFS的(数据触发器)Data-based triggers;每一个Oozie Job都是一个只有Map task的MR程序。

Workflow(工作流):由需要处理的每个工作组成,定义Job任务的执行,使用Hadoop流程定义语言(Hadoop Process Dfination Lang,hPDL)来描述工作流。作业流由一组行为节点构成,且这些节点通过控制流相连。通过job.properties定义workflow作业的配置信息;workflow.xml定义作业的执行工作流;三方库将依赖的.jar和.so放到lib/目录下。

工作流调度引擎——Oozie_第3张图片

Workflow生命周期包含六种状态:

状态

含义说明

PREP

一个工作流第一次创建还未运行就处于该状态。

RUNNING

一个已经被创建的工作流开始执行

SUSPENDED

一个运行状态的工作流会被挂起,直到重新执行或杀死

SUCCEEDED

一个运行状态的工作流到达end节点,变成该状态

KILLED

一个被创建,处于运行,挂起状态的工作流被杀死

FAILED

一个工作流不可预期的错误失败而终止

Workflow生命周期中状态之间的转移如图

工作流调度引擎——Oozie_第4张图片

 

Workflow中所有异步操作(action)都需要在Hadoop集群上以MR作业方式进行执行,充分利用集群的优点。Oozie通过两种方式来检查任务是否完成

(1)回调:当一个任务和一个计算被启动后,会为任务提供一个回调url,该任务执行完成后,会执行回调通知Oozie。

(2)轮询:Oozie不停地去查询任务执行的完成状态。如果由于网络故障回调机制失败,也会使用轮询的方式去获取任务的状态。

Coordinator(协调器):(1)将多个工作流协调成一个工作流来进行处理,多个workflow组成一个coordinator(2)定义workflow定时触发条件,周期性执行workflow。

Bundle Job(捆):顶层抽象,允许将一组coordinator任务打包成为一个bundle任务,组成bundle的多个coordinator可以作为一个整体进行控制(启动、停止、挂起、继续、重新执行等操作)。

 

你可能感兴趣的:(大数据,oozie集成)