一、简介
- Oozie是一个工作流引擎服务器,用于运行Hadoop Map/Reduce和Hive等任务工作流。
- Oozie以action为基本任务单位,可以将多个action构成一个DAG图。
- Oozie工作流通过HPDL(一种通过XML自定义处理的语言)来构造Oozie的工作流。
二、 Oozie四大组件服务
Oozie Workflow:
该组件用于定义和执行一个特定顺序的mapreduce、hive和pig作业。
Oozie Coordinator:
该组件用于支持基于事件、系统资源存在性等条件的workflow的自动化执行。
Oozie Bundle:
该引擎可以定义和执行"一束"应用,从而提供一个批量化的方法,
将一组Coordinator应用程序一起进行管理。
Oozie服务器等级协定(Service Level Agreement, SLA):
该组件支持workflow应用程序执行过程的记录跟踪。
组件关系:
workflow是oozie中最基本的一个服务组件。定义具体的action动作。
三大服务的的关系是:bundle包含多个coordinator,coordinator包含一个workflow。
三、Workflow介绍
- workflow使用hadoop流程定义语言(Hadoop Process Defination Language, hPDL)来描述工作流,hPDL是类似xml语言的一种相当简洁的定义类语言,使用有限数目的流控制节点和动作节点来描述workflow。
- workflow有两大类节点构成:工作流控制节点和动作节点。
工作流控制节点是workflow本身提供的一种控制workflow工作流执行路径的方法,不可以自定义。
动作节点是具体的操作方法,用户可以自定义。
- Workflow中的所有异步操作(action)都需要在hadoop集群上以mapreduce作业的方式进行执行,这样充分利用了集群的优点。oozie通过两种方式来检查任务是否完成:
回调:
当一个任务和一个计算被启动后,会为任务提供一个回调url,
该任务执行完成后,会执行回调来通知oozie。
轮询:
在任务执行回调失败的情况下,无论任何原因,都支持以轮询的
方式进行查询。
- oozie提供这两种方式来控制任务,将资源密集型的任务放到服务节点之外,使oozie节约服务器资源,确保单个oozie服务器可以支持上千个作业。
四、 Workflow工作流生命周期
五、控制节点
六、action动作节点
七、Workflow扩展的action动作节点
八、 Workflow规则
- workflow任务主要由job.properties、workflow.xml和其他动作需要的资源文件三部分组成,
- 其中job.properties中定义workflow作业的配置信息,workflow.xml定义作业的执行工作流。workflow.xml文件是一个有定义规则的xml文件。
workflow.xml配置规则详见:
workflow中的文档workflow.template.xml
job.properties配置参考:
workflow中的文档job.template.properties
九、 Coordinator介绍
- coordinator支持workflow过程的自动启动,常用于一些由时间/数据可用性来触发的、会多次调用的workflow过程的设计和执行。通过定义多个顺序运行的、前一个输出作为后一个输入的workflow。
- coordinator也支持定义常规运行的(包括以不同时间间隔运行的)workflow作业之间的依赖。
十、Bundle介绍
- Oozie Bundle是顶层抽象,允许将一组coordinator任务打包成为一个bundle任务。组成一个整体。
- bundle的多个coordinator可以作为一个整体来进行控制,包括启动、停止、挂起、继续、重新执行等操作。
- Bundle中不支持它的coordinator应用程序之间的显示依赖关系,如果需要定义这些依赖关系,可以在 coordinator中通过输入输出事件来指定依赖。
十一、案例
|