工作流调度引擎——Oozie

一、什么是Oozie

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通过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/目录下。

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

状态

含义说明

PREP

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

RUNNING

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

SUSPENDED

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

SUCCEEDED

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

KILLED

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

FAILED

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

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

 

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

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

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

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

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

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值