Oozie 简介

背景:工作初期,目前公司这边是使用crontab做的脚本调度,但是如果某个脚本出问题,一时间很难找到是哪里出问题,维护工作量偏大,所以抽出一点时间来研究下oozie。

什么是oozie?

oozie是一个javaweb程序,它运行在java servlet容器-即tomcat中,并且使用数据库来存储一下内容,1、工作流定义 2、当前运行的工作流实例,包括实例的状态和变量。

oozie工作流是放置在控制依赖DAG 有向无环图 中的一组动作,例如说shell mapreduce 还有一些pig脚本作业等,会按照一定的顺序执行,我们会使用一种HPDL (一种xml流程定义语言)

来描述这个图。

HDPL是一种比较简洁的语言,只会使用少数的流程控制和动作节点,控制节点会定义执行的流程,并包含工作流的起始和结束点 (start end fail) 以及控制工作流执行路径的机制(decision fork以及join节点),

动作节点是一种机制,通过他们工作流会触发执行计算或者处理任务,Oozie为以下类型的动作提供支持: Hadoop map-reduce、Hadoop文件系统、Pig、Java、hive、sqoop、spark、email和Oozie的子工作流

(SSH动作已经从Oozie schema 0.2之后的版本中移除了)等。

所有由动作节点触发的计算或处理,都不在oozie里,而是由mapreduce框架执行,这种方法可以让现有的hadoop用于负载均衡,灾难恢复机制。这些任务主要是异步执行的,当然也有同步执行的(只有文件系统例外)

这就意味着大多数工作流触发到计算或者处理任务的类型来说,在工作流操作转换到下一个流程的时候需要等待。直到上一个流程正常结束后,下一流程才可继续。oozie可以通过两种不同方式来检测计算或者处理任务是否

完成。回调和轮询。当oozie启动了计算或者处理任务的时候,它会为任务提供唯一的回调url,然后任务会在完成的时候发送给指定的url,当任务无法触发回调url时候,oozie特有的机制,可以对计算或者处理任务进行轮询操作,

从而保证完成任务。

Oozie工作流可以参数化(在工作流定义中使用像${inputDir}之类的变量)。在提交工作流操作的时候,我们必须提供参数值。如果经过合适地参数化(比方说,使用不同的输出目录),那么多个同样的工作流操作可以并发。 

一些工作流是根据需要触发的,但是大多数情况下,我们有必要基于一定的时间段和(或)数据可用性和(或)外部事件来运行它们。Oozie协调系统(Coordinator system)让用户可以基于这些参数来定义工作流执行计划。

Oozie协调程序让我们可以以谓词的方式对工作流执行触发器进行建模,那可以指向数据、事件和(或)外部事件。工作流作业会在谓词得到满足的时候启动。  经常我们还需要连接定时运行、但时间间隔不同的工作流操作。

多个随后运行的工作流的输出会成为下一个工作流的输入。把这些工作流连接在一起,会让系统把它作为数据应用的管道来引用。Oozie协调程序支持创建这样的数据应用管道。

关于oozie的详细介绍,请戳oozie详情

转载于:https://www.cnblogs.com/ChengDavid/p/6026367.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值