大数据开发:Azkaban和Oozie调度系统对比

大数据处理的各个环节当中,涉及到诸多的任务执行,为了保证系统的性能和运行效率,就需要对这些任务进行合理的安排,这就需要到调度系统。在调度系统当中,DAG工作流类调度系统以Azkaban和Oozie为代表。今天的大数据开发分享,我们就主要来讲讲Azkaban和Oozie调度系统对比。

所谓DAG工作流类调度系统,这一类系统的方向,重点定位于任务的调度依赖关系的正确处理,分片执行的逻辑通常不是系统关注的核心,或者不是系统核心流程的关键组成部分,如果某些任务真的关注分片逻辑,往往交给后端集群(比如MR任务自带分片能力)或者具体类型的任务执行后端去实现。

DAG工作流类调度系统所服务的往往是作业繁多,作业之间的流程依赖比较复杂的场景,比如大数据开发平台的离线数仓报表处理业务,从数据采集,清洗,到各个层级的报表的汇总运算,到最后数据导出到外部业务系统,一个完整的业务流程,可能涉及到成百上千个相互交叉依赖关联的作业。

这类系统的代表,包括Oozie,Azkaban,Chronos,Zeus,Lhotse等,这里我们选取前两者,从功能、工作流定义、工作流传参、定时执行、资源管理、工作流执行等方面来进行分析比对:

1、功能

Azkaban与Oozie均可以调度mapreduce、pig、java脚本工作流任务。

Azkaban与Oozie均可以定时执行工作流任务。

2、工作流定义

Azkaban使用Properties文件定义工作流。

Oozie使用XML文件定义工作流。

3、工作流传参

Azkaban支持直接传参,例如${input}。

Oozie支持参数和EL表达式,例如${fs:dirSize(myInputDir)}。

4、定时执行

Azkaban的定时执行任务是基于时间的。

Oozie的定时执行任务是基于时间和输入数据资源管理。

5、工作流执行

Azkaban有两种运行模式,分别是solo server mode(executor server和web server部署在同⼀台节点)和multi server mode(executor server和web server可以部署在不同节点)。

Oozie作为工作流服务运行,支持多用户和多工作流。

综上所述,Ooize相比Azkaban是一个重量级的任务调度系统,功能全面,但配置使用也更复杂(xml)。如果可以不在意某些功能的缺失,轻量级调度Azkaban是很不错的候选对象。

关于大数据开发,Azkaban和Oozie调度系统,以上就为大家做了简单的介绍了。相对来说,Oozie调度系统更加全面,但是也更加复杂,在学习当中,也要多花精力去掌握。

你可能感兴趣的:(大数据开发:Azkaban和Oozie调度系统对比)