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
主要有三个主要概念,分别是workflow
,coordinator
,bundle
。
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
支持命令行、Web
、RestApi
、Java Api
操作.
工作流状态:
Azkaban
将正在执行的workflow
状态保存在内存中;
Oozie
将其保存在MySql
中。
执行位置:
Azkaban
在脚本所在位置执行命令/程序;
Oozie
在Hadoop
集群生态内执行命令/程序。
以上是关于Hadoop之Oozie的主要内容,如果未能解决你的问题,请参考以下文章