分享

Oozie简介与快速入门

问题导读:

1.Oozie是什么?
2.如何自定义Oozie流程?

3.Oozie如何定义控制流节点(Control Flow Nodes)和动作节点(Action Nodes)






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子流程。
下面我们看一下,官方文档中给出的定义流程的例子,流程定义示例如图所示:
ff663a646ee0d7f956b6de9dcf9bd247.png

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

  1. <workflow-app name='wordcount-wf' xmlns="uri:oozie:workflow:0.1">
  2.      <start to='wordcount' />
  3.      <action name='wordcount'>
  4.           <map-reduce>
  5.                <job-tracker>${jobTracker}</job-tracker>
  6.                <name-node>${nameNode}</name-node>
  7.                <configuration>
  8.                     <property>
  9.                          <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还具有很多功能,而且扩展性很好:更多内容,可以查看该文档

更多精彩、丰富内容,还可以查看这里:
1、值得一看:Oozie Coordinator使用及详解
2、Hadoop的伙伴:Oozie工作流程定义详解
3、新技术:Oozie-3.3.2安装配置运行实践






没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条