调度工具性能对比:Apache Oozie,其配置工做流的过程是编写大量的XML配置,并且代码复杂度比较高,不易于二次开发。ooize相比azkaban是一个重量级的任务调度系统,功能全面,但配置使用也更复杂。若是能够不在乎某些功能的缺失,轻量级调度器azkaban是很不错的候选对象。java
二者在功能方面大体相同,只是Oozie底层在提交Hadoop Spark做业是经过org.apache.hadoop的封装好的接口进行提交,而Azkaban能够直接操做shell语句。在安全性上可能Oozie会比较好。web
工做流定义:Oozie是经过xml定义的而Azkaban为properties来定义。sql
部署过程:Oozie的部署相对困难些,同时它是从Yarn上拉任务日志。shell
Azkaban中若是有任务出现失败,只要进程有效执行,那么任务就算执行成功,这是BUG,可是Oozie能有效的检测任务的成功与失败。apache
操做工做流:Azkaban使用Web操做。Oozie支持Web,RestApi,Java API操做。浏览器
权限控制:Oozie基本无权限控制,Azkaban有较完善的权限控制,供用户对工做流读写执行操做。安全
Oozie的action主要运行在hadoop中而Azkaban的actions运行在Azkaban的服务器中。服务器
记录workflow的状态:Azkaban将正在执行的workflow状态保存在内存中,Oozie将其保存在Mysql中。模块化
出现失败的状况:Azkaban会丢失全部的工做流,可是Oozie能够在继续失败的工做流运行工具
Azkaban是由Linkedin开源的一个批量工做流任务调度器。用于在一个工做流内以一个特定的顺序运行一组工做和流程。Azkaban定义了一种KV文件格式来创建任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工做流。
它有以下功能特色:
1.Web用户界面
2.方便上传工做流
3.方便设置任务之间的关系
4.调度工做流
5.认证/受权(权限的工做)
6.可以杀死并从新启动工做流
7.模块化和可插拔的插件机制
8.项目工做区
9.工做流和任务的日志记录和审计
Oozie工做流是放置在控制依赖DAG(有向无环图 Direct Acyclic Graph)中的一组动做(例如,Hadoop的Map/Reduce做业、Pig做业等),其中指定了动做执行的顺序。咱们会使用hPDL(一种XML流程定义语言)来描述这个图。
hPDL是一种很简洁的语言,只会使用少数流程控制和动做节点。控制节点会定义执行的流程,并包含工做流的起点和终点(start、end和fail节点)以及控制工做流执行路径的机制(decision、fork和join节点)。动做节点是一些机制,经过它们工做流会触发执行计算或者处理(以下图)
Azkaban:
Azkaban的工做流的建立特别方便,直接经过web界面建立工程,而后提交任务。(建立job的的文件必须是以.job的文件,而且上传的文件是以zip压缩包的形式进行上传)。
建立工做流的基本流程:
(1)建立工程,提交任务。
(2)任务提交完成以后bar.job和foo.job之间的依赖关系显示在web 界面当中。
(3)而后执行相应提交的任务。以下图二者的对应关系,能够直接执行单个的任务,也能够指定定时任务。可设置定时任务的执行时间。同时能够在定时执行完成以后作相应的提醒服务。
Oozie的基本操做:
操做准备;
job.properties |
任务的一些配置文件,例如运行的HDFS以及JobTracker (ResourceManager)等 |
Lib |
存放执行的JAR包 |
Workflow.xml |
工做流的依赖 |
****.jar |
执行任务的jar包(自定义的文件) |
在ooize的client端执行:
Oozie job --oozie http://ip:11000/oozie -config ${job.properties} -run
执行以后,能够在web页面查询执行的结果。
在hue当中操做ooize的操做:
Hue是一个可快速开发和调试Hadoop生态系统各类应用的一个基于浏览器的图形化用户接口。
Hue可实现对oozie任务的开发,监控,和工做流协调调度 。使的oozie的操做变得更加的简单快捷。
(1) 建立工做流
运行完成产生相对应的xml文件和相对的日志信息:
添加到定制执行任务。指定定时任务。