Hadoop之Oozie

Posted _TIM_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop之Oozie相关的知识,希望对你有一定的参考价值。

Oozie简介

对于我们的工作,可能需要好几个Hadoop作业来协作完成,往往一个job的输出会被当做另一个job的输入来使用,这个时候就涉及到了数据流的处理。我们不可能就盯着程序,等它运行完再去运行下一个程序,所以,一般的做法就是通过Shell来做,但是如果涉及到的工作流很复杂(比方说有1,2,3,4四个作业,1的输出作为2 3 4的输入,然后2 3的结果运算之后再和1的结果进行某种运算……最后再输出)是很费时费力的。这里就用到了Oozie,一个能把多个MR作业组合为一个逻辑工作单元(一个工作流),从而自动完成任务调用的工具。

Oozie本质就是一个作业协调工具,底层原理是通过将xml语言转换成MapReduce程序来做,但只是在集中Map端做处理,避免Shuffle的过程。

Oozie主要有三个主要概念,分别是workflowcoordinatorbundle

Workflow: 工作流,由我们需要处理的每个工作组成,进行需求的流式处理。

Coordinator: 协调器,可以理解为工作流的协调器,可以将多个工作流协调成一个工作流来进行处理。

Bundle: 捆,束。将一堆的coordinator进行汇总处理。

简单来说,workflow是对要进行的顺序化工作的抽象,coordinator是对要进行的顺序化的workflow的抽象,bundle是对一堆coordiantor的抽象。层级关系层层包裹。

Azkaban和Oozie的区别:

一个完整的数据分析系统通常都是由大量任务单元组成:Shell脚本程序,Java程序,MapReduce程序、Hive脚本等,各任务单元之间存在时间先后及前后依赖关系。为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行。
调度工具性能对比:Apache Oozie,其配置工作流的过程是编写大量的XML配置,而且代码复杂度比较高,不易于二次开发。Ooize相比Azkaban是一个重量级的任务调度系统,功能全面,但配置使用也更复杂。如果可以不在意某些功能的缺失,轻量级调度器Azkaban是很不错的候选对象,二者均可以定时执行工作流任务。

工作流定义:
Azkaban使用Properties文件定义工作流;
Oozie使用XML文件定义工作流。

定时执行:
Azkaban的定时任务基于时间;
Oozie的定时任务基于时间和输入数据。

资源管理:
Azkaban有较为严格的权限控制,如用户对工作流进行读/写/执行等操作;
Oozie基本没有权限控制。

依赖:
Azkaban依赖于mysql
Oozie依赖于hadoop

工作流操作:
Azkaban使用Web操作;
Oozie支持命令行、WebRestApiJava Api操作.

工作流状态:
Azkaban将正在执行的workflow状态保存在内存中;
Oozie将其保存在MySql中。

执行位置:
Azkaban在脚本所在位置执行命令/程序;
OozieHadoop集群生态内执行命令/程序。

以上是关于Hadoop之Oozie的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop之Oozie

Hadoop之Oozie

Hadoop工作流引擎之Azkaban与Oozie对比

云小课|MRS基础原理之Oozie任务调度

在 Hadoop 2.2 上安装 oozie

如何使用 hadoop-2.2 在 oozie 中执行 mapreduce 程序