1 基本概念
在字典中搜索oozie一词,可以看到如下释义:
没错,就是训象人!大象,你想到了什么?没错就是hadoop的logo,一只黄色的小象。所以光从这个翻译来看,你就应该明白oozie是做什么的了吧。接下来我们详细介绍
2 oozie概念
Hadoop常见调度框架:
(1)Linux Crontab:
Linux自带的任务调度计划,在任务比较少的情况下,可以使用这种方式,直接执行脚本,例如添加一个执行计划: 0 12 * hive -f xxx.sql
(2)Azkaban:
(3)Oozie:Cloudera公司开源
(4)Zeus:阿里开源。
Oozie是管理Hadoop作业的工作流调度系统。Oozie定义了控制流节点和动作节点。Oozie实现的功能:
(1)Workflow:顺序执行流程节点;
(2)Coordinator:定时触发workflow;
(3)Bundle Job:绑定多个Coordinator。
3 oozie特点
1 Oozie是一个管理Apache Hadoop作业的工作流调度程序系统。
2 Oozie工作流作业是操作的直接非周期图(DAGs)。
3 Oozie协调器作业是由时间(频率)和数据可用性触发的周期性Oozie工作流作业。
4 Oozie与Hadoop堆栈的其他部分集成在一起,支持几种类型的Hadoop开箱即用作业(如Java map-reduce、流映射-reduce、Pig、Hive、Sqoop和Distcp),以及系统特定的作业(如Java程序和shell脚本)。
5 Oozie是一个可伸缩、可靠和可扩展的系统。
对于我们的工作,可能需要好几个hadoop作业(job)来协作完成,往往一个job的输出会被当做另一个job的输入来使用,这个时候就涉及到了数据流的处理。我们不可能就盯着程序,等它运行完再去运行下一个程序,所以,一般的做法就是通过shell来做,但是如果涉及到的工作流很复杂(比方说有1,2,3,4四个作业,1的输出作为2 3 4的输入,然后2 3的结果运算之后再和1的结果进行某种运算……最后再输出)是很费时费力的。这里就用到了oozie——一个能把多个MR作业组合为一个逻辑工作单元(一个工作流),从而自动完成任务调用的工具。
4 Oozie四大组件服务介绍
Oozie Workflow: 该组件用于定义和执行一个特定顺序的mapreduce、hive和pig作业。
Oozie Coordinator:该组件用于支持基于事件、系统资源存在性等条件的workflow的自动化执行。
Oozie Bundle:该引擎可以定义和执行"一束"应用,从而提供一个批量化的方法,将一组Coordinator应用程序一起进行管理。
Oozie服务器等级协定(Service Level Agreement, SLA):该组件支持workflow应用程序执行过程的记录跟踪。
workflow是oozie中最基本的一个服务组件。三大服务的的关系是:bundle包含多个coordinator,coordinator包含一个workflow,workflow定义具体的action动作。
5 Oozie 工作原理
Oozie是一个管理Hadoop作业、可伸缩、可扩展、可靠的工作流调度系统,它内部定义了三种作业:
- 工作流作业:由一系列动作构成的有向无环图(DAGs)
- 协调器作业:按时间频率周期性触发Oozie工作流的作业
3.Bundle作业:管理协调器作业