Oozie简介

转载 2012年03月23日 13:57:34

什么是Oozie?

Oozie是一种Java Web应用程序,它运行在Javaservlet容器——即Tomcat——中,并使用数据库来存储以下内容:

工作流定义

当前运行的工作流实例,包括实例的状态和变量

Oozie工作流是放置在控制依赖DAG(有向无环图 DirectAcyclic Graph)中的一组动作(例如,Hadoop的Map/Reduce作业、Pig作业等),其中指定了动作执行的顺序。我们会使用hPDL(一种XML流程定义语言)来描述这个图。

hPDL是一种很简洁的语言,只会使用少数流程控制和动作节点。控制节点会定义执行的流程,并包含工作流的起点和终点(start、end和fail节点)以及控制工作流执行路径的机制(decision、fork和join节点)。动作节点是一些机制,通过它们工作流会触发执行计算或者处理任务。Oozie为以下类型的动作提供支持: Hadoop map-reduce、Hadoop文件系统、Pig、Java和Oozie的子工作流(SSH动作已经从Oozie schema 0.2之后的版本中移除了)。

所有由动作节点触发的计算和处理任务都不在Oozie之中——它们是由Hadoop的Map/Reduce框架执行的。这种方法让Oozie可以支持现存的Hadoop用于负载平衡、灾难恢复的机制。这些任务主要是异步执行的(只有文件系统动作例外,它是同步处理的)。这意味着对于大多数工作流动作触发的计算或处理任务的类型来说,在工作流操作转换到工作流的下一个节点之前都需要等待,直到计算或处理任务结束了之后才能够继续。Oozie可以通过两种不同的方式来检测计算或处理任务是否完成,也就是回调和轮询。当Oozie启动了计算或处理任务的时候,它会为任务提供唯一的回调URL,然后任务会在完成的时候发送通知给特定的URL。在任务无法触发回调URL的情况下(可能是因为任何原因,比方说网络闪断),或者当任务的类型无法在完成时触发回调URL的时候,Oozie有一种机制,可以对计算或处理任务进行轮询,从而保证能够完成任务。

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

一些工作流是根据需要触发的,但是大多数情况下,我们有必要基于一定的时间段和(或)数据可用性和(或)外部事件来运行它们。Oozie协调系统(Coordinator system)让用户可以基于这些参数来定义工作流执行计划。Oozie协调程序让我们可以以谓词的方式对工作流执行触发器进行建模,那可以指向数据、事件和(或)外部事件。工作流作业会在谓词得到满足的时候启动。

   经常我们还需要连接定时运行、但时间间隔不同的工作流操作。多个随后运行的工作流的输出会成为下一个工作流的输入。把这些工作流连接在一起,会让系统把它作为数据应用的管道来引用。Oozie协调程序支持创建这样的数据应用管道。

 

设计思想

  工作流控制可以通过decision\fork\join等几个节点完成。目前不支持环形工作流.

动作和决定可以和job的属性、action的输出(例如计数等)、hdfs的文件信息(是否存在、大小等)一起参数化。这些参数可以使用${var}定义在工作流配置文件中。

工作流应用是一个包含了工作流定义(xml文件),所有必须的文件的目录,并执行所有的动作。这些必须文件包括jar文件(用来执行mr任务)、shell脚本(用来执行streaming mr 任务)、还有其他的比如本地库、pig脚本以及其他文件。

 通过命令行工具或者webserviceapi或java api即可执行工作流。

 通过web控制台、命令行工具、webserviceapi、java api即可对系统和工作流任务进行监控。Oozie是一个事务系统,其已经内在支持了自动化和手动的重试机制。(这点DIP-DATA-ANALYZE有转发(自动第二次重试),jobtrace(手动重试)也可以支持).

如果任务失败了,工作流的任务就会略过之前完成的动作重新执行,并且工作流应用在重新运行前可以被修补(这里patched不确定是否这样表达).

 目前特性: 

工作流依赖管理:Oozie运行环境管理任务依赖,并在所有依赖全部满足时菜执行动作。工作流取决于时间和/或数据是否存在。基于DAG(有向无环图)工作流内部依赖通常会优先完成.

动作节点的参数化:Oozie内嵌默认使用jsp表达式语言对动作进行参数化。这些参数包括工作流名字、动作名称、开始时间等。

同步数据集:工作流可以依赖同步输入数据集合。这些数据可以是定时数据集或者是周期性产生的数据集.

本地支持streaming mr、pig、hdfs jobs。支持绝大部分Hadoop集群的任务类型

Webservice API:支持命令行和webserviceapi

支持界面化的监控:既可以通过gui界面,也可以通过webservice api监控工作流运行情况

缺失:

目前还不支持hive

不支持hbase 

Oozie运行必要条件:

Unix

Java 1.6+

Tomcat 6+

MySQL 5+ or HSQLDB 1.8+

Hadoop 0.20+

Pig 0.2+

参考资料:

  官网:http://yahoo.github.com/oozie/

 apache:http://incubator.apache.org/oozie/

  博客文章:http://blog.sina.com.cn/s/blog_62a9902f01011ccd.html

完结

 

Oozie工作流简介

什么是Oozie? Oozie是一种Java Web应用程序,它运行在Javaservlet容器——即Tomcat——中,并使用数据库来存储以下内容: 工作流定义 当前运行的工作流实例,包括实例...

Oozie基础知识:调度器简介及Oozie功能架构

1.Oozie调度框架      * 工作流:将不同的业务进行编排     如:import->hive->export * 调度:对作业或任务和定时执行,或事件的触发执行         如...

oozie-4.3.0

  • 2017年10月25日 12:45
  • 2.28MB
  • 下载

Spark job在hue-oozie中的另一种方式调度

工作中使用的是hue来配置oozie工作流调度及任务中调度关系,spark job的输入是由hive sql产生输出的表,在配置spark job由于一些客观关系出现很多问题导致无法正确的执行,在oo...

Apache Oozie.pdf

  • 2017年09月17日 11:31
  • 6.8MB
  • 下载

oozie所需的js包文件

  • 2017年09月14日 18:14
  • 15.13MB
  • 下载

在Oozie 中调度执行shell、hive 脚本,以及通过shell脚本执行hive/sqoop/shell脚本的方法

oozie 是一个非常不错的页面可视化程序调度器,优点很明显,但缺点也很多,最恶心的是不支持动态的参数,以及使用sqoop时非常麻烦,因此,最好的方法自然是通过oozie调度一个shell调度脚本,由...

oozie安装详细文档

  • 2017年08月17日 23:50
  • 149KB
  • 下载

oozie 3.0.0

  • 2013年11月16日 13:00
  • 49.21MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oozie简介
举报原因:
原因补充:

(最多只允许输入30个字)