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集群生态内执行命令/程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值