Oozie简介与快速入门

Oozie是一个基于工作流引擎的开源框架,是由Cloudera公司贡献给Apache的,它能够提供对Hadoop MapReduce和Pig Jobs的任务调度与协调。Oozie需要部署到Java Servlet容器中运行。
Oozie工作流定义,同JBoss jBPM提供的jPDL一样,也提供了类似的流程定义语言hPDL,通过XML文件格式来实现流程的定义。对于工作流系统,一般都会有很多不同功能的节点,比如分支、并发、汇合等等,Oozie也有类似的一些概念,不做过多解释,更多信息可以参考相关文档。
这里,简单描述一下,Oozie定义了控制流节点(Control Flow Nodes)和动作节点(Action Nodes),其中控制流节点定义了流程的开始和结束,以及控制流程的执行路径(Execution Path),如decision、fork、join等;而动作节点包括Hadoop map-reduce、Hadoop文件系统、Pig、SSH、HTTP、eMail和Oozie子流程。

下面我们看一下,官方文档中给出的定义流程的例子,流程定义示例如图所示:



这个流程图表达了WordCount统计词频的流程编排功能,非常简单,启动执行一个MapReduce任务,如果成功则正常结束,如果失败则取消该任务。
上图对应的hPDL定义文件,内容如下所示:

01 <workflow-app name='wordcount-wf' xmlns="uri:oozie:workflow:0.1">
02 <start to='wordcount' />
03 <action name='wordcount'>
04 <map-reduce>
05 <job-tracker>${jobTracker}</job-tracker>
06 <name-node>${nameNode}</name-node>
07 <configuration>
08 <property>
09 <name>mapred.mapper.class</name>
10 <value>org.myorg.WordCount.Map</value>
11 </property>
12 <property>
13 <name>mapred.reducer.class</name>
14 <value>org.myorg.WordCount.Reduce</value>
15 </property>
16 <property>
17 <name>mapred.input.dir</name>
18 <value>${inputDir}</value>
19 </property>
20 <property>
21 <name>mapred.output.dir</name>
22 <value>${outputDir}</value>
23 </property>
24 </configuration>
25 </map-reduce>
26 <ok to='end' />
27 <error to='end' />
28 </action>
29 <kill name='kill'>
30 <message>Something went wrong: ${wf:errorCode('wordcount')}</message>
31 </kill>
32 <end name='end' />
33 </workflow-app>

这个XML文件描述地就是上图表达的流程含义,如果熟悉Hadoop平台的话,对上面的内容非常容易理解。当然,这里只有一个MapReduce任务,试想如果一个计算系统需要执行更加复杂的逻辑,比如对应很多个MR,还有其他类似的动作节点(Action Nodes),如果能够通过流程描述出来,加上可视化功能,非常直观,省去了我们手工进行编排的麻烦。
另外,Oozie还具有很多功能,而且扩展性很好。更多内容,可以查看文档:http://archive.cloudera.com/cdh4/cdh/4/oozie/。

时间: 2024-10-29 12:37:38

Oozie简介与快速入门的相关文章

Oozie 快速入门

设想一下,当你的系统引入了spark或者hadoop以后,基于Spark和Hadoop已经做了一些任务,比如一连串的Map Reduce任务,但是他们之间彼此右前后依赖的顺序,因此你必须要等一个任务执行成功后,再手动执行第二个任务.是不是很烦! 这个时候Oozie(驯象人,典故来自评论一楼)就派上用场了,它可以把多个任务组成一个工作流,自动完成任务的调用. 简介 Oozie是一个基于工作流引擎的服务器,可以在上面运行Hadoop的Map Reduce和Pig任务.它其实就是一个运行在Java S

《jQuery Mobile快速入门》—— 第1章 jQuery Mobile简介

第1章 jQuery Mobile简介 jQuery Mobile快速入门 jQuery Mobile是一个用来构建跨平台移动Web应用程序的新UI框架,具有使用简单的特点.在短短几分钟内,你可以创建出能够在当今可用的近乎所有手机.平板电脑.台式机和电子阅读器设备上运行的优化移动应用程序(app).是的,通过一个jQuery Mobile代码库,我们几乎可以为所有的消费者创建统一标准的体验.当Web设计人员或开发人员需要一个简单的框架来开发丰富的移动Web体验时,jQuery Mobile就成为

《R语言游戏数据分析与挖掘》一2.1 开发环境准备和快速入门

2.1 开发环境准备和快速入门 2.1.1 R语言简介 R语言的前身是S语言,S语言是由AT &T Bell实验室的Rick Becker.John Chambers和Allan Wilks开发的一种用来进行数据探索.统计分析.作图的解释型语言.最初S语言的实现版本主要是S-PLUS.S-PLUS是一个商业软件,它基于S语言,并由MathSoft公司的统计科学部进一步完善.而R语言最初由来自新西兰大学的Ross Ihaka和Robert Gentleman开发(由于他们的名字都以R开头,所以该软

初学者如何快速入门JSP实例分析

js|初学|快速入门 1) JSP(JavaServer Pages)简介:在当今世界,流行的Internet应用程序开发主要有:ASP,PHP,CGI,JSP--等多种方案,技术上各有优缺点,但是JSP以其简单易学,跨平台的特性,在众多程序中独树一帜,在短短几年中已经形成了一套完整的规范,并广泛的应用于电子商务等各个领域中.在国内JSP现在也得到了比较广泛的重视. 2) 如何才能快速掌握JSP:JSP实际上是JSP定义的一些标记和JAVA程序段,以及HTML文件的混合体.所以,如果要掌握JSP

Toad 使用快速入门(转载)

快速入门 Toad 使用快速入门                                      目录 一.Toad功能综述二.系统需求三.安装指南四.快速入门1. Schema browser的用法简介2. SQL Editor的使用介绍3. Procedure Editor的用法介绍4. 如何进行PLSQL的debug5. 如何使用SQLab Xpert优化SQL6. 如何使用SQL Modeler来编写查询7. 如何使用Toad的DBA方面的功能 一. Toad功能综述 在Ora

Docker快速入门以及环境配置详解_docker

前言 数据科学开发环境配置起来让人头疼,会碰到包版本不一致.错误信息不熟悉和编译时间漫长等问题.这很容易让人垂头丧气,也使得迈入数据科学的这第一步十分艰难.而且这也是一个完全不常见的准入门槛. 还好,过去几年中出现了能够通过搭建孤立的环境来解决这个问题的技术.本文中我们就要介绍的这种技术名叫Docker.Docker能让开发者简单.快速地搭建数据科学开发环境,并支持使用例如Jupyter notebooks等工具进行数据探索. 简介 Docker 最初 dotCloud 公司内部的一个业余项目

《jQuery Mobile快速入门》—— 导读

前言 jQuery Mobile快速入门 当前,企业和个人用于开发和发布移动应用程序所使用的技术正在发生变化,而我们则是见证者.最初,开发和发布移动程序的策略是针对每一个主流平台开发独立的本地app.然而,开发团队迅速意识到,维护多个平台所需的花费是不可忍受的,而且移动团队也会丧失其敏捷性.在将来,移动开发团队只需一次编码,就可以将app部署到所有设备上,这样的开发团队会更具竞争性,而jQuery Mobile可以帮助你实现这一目标. jQuery Mobile是一个框架,用于交付具有统一界面的

【JAVA秒会技术之ActiveMQ】ActiveMQ的快速入门

ActiveMQ的快速入门 一.ActiveMQ介绍 1.ActiveMQ简介         MQ,即Message Queue,消息队列.         ActiveMQ,是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位. 2.JMS简介        JMS的全称是Java Message S

Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo演示   你可以把webapi理解为面向资源编程(就是通过http请求来直接操作,比如get post put delete等等)  工具:PostMan 先不讲技术,先引入,让大家看看这个是什么? 这个是webapi里面的某个控制器,里面定义了很多方法,和http请求有一一对应的嫌疑 api控制器