共计 2436 个字符,预计需要花费 7 分钟才能阅读完成。
设想一下,当你的系统引入了 spark 或者 Hadoop 以后,基于 Spark 和 Hadoop 已经做了一些任务,比如一连串的 Map Reduce 任务,但是他们之间彼此右前后依赖的顺序,因此你必须要等一个任务执行成功后,再手动执行第二个任务。是不是很烦!这个时候 Oozie 乌贼就派上用场了,它可以把多个任务组成一个工作流,自动完成任务的调用。
至于为什么要取这样的名字,我的理解是,乌贼有很多只脚但是只有一个身体,这正像是工作流引擎一样,功能很多,可以做的事情很多,但是都是受到一个调度器控制;它的身体很柔软,说明工作流引擎本身弹性功能很大,能做的事情很多。至于为什么想到上面的图片,看完美人鱼,一提到乌贼或者八爪鱼我就想到了小猪。
简介
Oozie 是一个基于工作流引擎的服务器,可以在上面运行 Hadoop 的 Map Reduce 和 Pig 任务。它其实就是一个运行在 Java Servlet 容器(比如 Tomcat)中的 Javas Web 应用。
对于 Oozie 来说,工作流就是一系列的操作(比如 Hadoop 的 MR,以及 Pig 的任务),这些操作通过有向无环图的机制控制。这种控制依赖是说,一个操作的输入依赖于前一个任务的输出,只有前一个操作完全完成后,才能开始第二个。
Oozie 工作流通过 hPDL 定义(hPDL 是一种 XML 的流程定义语言)。工作流操作通过远程系统启动任务。当任务完成后,远程系统会进行回调来通知任务已经结束,然后再开始下一个操作。
Oozie 工作流包含控制流节点以及操作节点
控制流节点定义了工作流的开始和结束(start,end 以及 fail 的节点),并控制工作流执行路径(decision,fork,join 节点)。操作节点是工作流触发计算 \ 处理任务的执行,Oozie 支持不同的任务类型——hadoop map reduce 任务,hdfs,Pig,SSH,eMail,Oozie 子工作流等等。Oozie 可以自定义扩展任务类型。
Oozie 工作流可以参数化的方式执行(使用变量 ${inputDir}定义)。当提交工作流任务的时候就需要同时提供参数。如果参数合适的话(使用不同的目录)就可以定义并行的工作流任务。
总结来说
- Oozie 是管理 Hadoop 作业的工作流调度系统
- Oozie 的工作流是一系列的操作图
- Oozie 协调作业是通过时间(频率)以及有效数据触发当前的 Oozie 工作流程
- Oozie 是针对 Hadoop 开发的开源工作流引擎,专门针对大规模复杂工作流程和数据管道设计
- Oozie 围绕两个核心:工作流和协调器,前者定义任务的拓扑和执行逻辑,后者负责工作流的依赖和触发。
WordCount 工作流例子
hPDL 流程的定义:
<workflow-app name='wordcount-wf' xmlns="uri:oozie:workflow:0.1">
<start to='wordcount'/>
<action name='wordcount'>
<map-reduce>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.mapper.class</name>
<value>org.myorg.WordCount.Map</value>
</property>
<property>
<name>mapred.reducer.class</name>
<value>org.myorg.WordCount.Reduce</value>
</property>
<property>
<name>mapred.input.dir</name>
<value>${inputDir}</value>
</property>
<property>
<name>mapred.output.dir</name>
<value>${outputDir}</value>
</property>
</configuration>
</map-reduce>
<ok to='end'/>
<error to='end'/>
</action>
<kill name='kill'>
<message>Something went wrong: ${wf:errorCode('wordcount')}</message>
</kill/>
<end name='end'/>
</workflow-app>
参考
- oozie 入门介绍
下面关于 Oozie 的文章您也可能喜欢,不妨看看:
Oozie4.0.1 详细安装教程 http://www.linuxidc.com/Linux/2014-12/110456tm
指定 Oozie Java 节点的 Hadoop 属性 http://www.linuxidc.com/Linux/2014-06/103617.htm
Hadoop 平台上 Oozie 调度系统的安装配置 http://www.linuxidc.com/Linux/2014-04/100382.htm
Oozie 中运行 mapreduce node-action 时的常见异常解决方法 http://www.linuxidc.com/Linux/2014-02/96685.htm
Oozie web-console 时间本地化 http://www.linuxidc.com/Linux/2012-11/74797.htm
Hadoop Oozie 学习笔记 使用 Oozie, 通过命令行运行 example http://www.linuxidc.com/Linux/2012-08/67029.htm
Hadoop Oozie 学习笔记 自定义安装和启动 http://www.linuxidc.com/Linux/2012-08/67028.htm
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/137322.htm