常用调度工具Oozie、Azkaban、Airflow总结

调度的意义:
调度时一个项目中必不可少的,项目中一般都会包括程序、hive脚本等多任务,我们一般把任务写到shell脚本中,最后通过调度工具把所有的任务串起来。

airflow是一个可编程的工作流调度、监控平台。可分布式部署调用,基于DAG(本身没有队列功能,需要使用第三方组件,比如redis、rabbitMQ),airflow用python进行编程
开发,可以进行丰富的任务处理,包括bash命令的执行、python代码调用、发送邮件、发送Http请求等。
airflow websever -D启动airflow的web界面

azkaban是一个工作流监控、调度工具。可以部署分布式,通过在job文件中以properties格式配置任务并打包成zip包即可进行调度。azkaban内部架构包括三部分
excutorServer、webServer、mysql,分别负责任务的执行、web界面的显示、调度信息的存储。
azkaban是一个轻量级的调度器。

oozie是一个基于hadoop的分布式的工作流调度框架,oozie通过在xml文件中配置任务来进行调度,执行调度时会启动MR任务,依赖于hadoop平台,是一个重量级框架。

调度框架的区别
定时方面:
  1、Azkaban的定时执行任务是基于时间的
  2、Oozie的定时执行任务基于时间和输入数据
3、airflow定时任务可以用python代码实现基于时间和数据
开发方面:
1、azkaban使用properties文件定义工作流
2、oozie使用xml定义工作流
3、airflow使用python编程来定义工作流
优缺点:
1、azkaban,轻量级、开发较为简单、有良好的web界面对任务进行查看监控,但是azkaban定时执行任务只是基于时间,不基于数据。
2、airflow,微重量级,分布式的部署需要依赖第三方组件,开发需要使用python进行开发,有一定的难度。
3、oozie,重量级,可以通过CM或Ambari便捷安装,需要使用xml文件配置工作流,有一定的难度。

猜你喜欢

转载自blog.csdn.net/qq_39719415/article/details/106547283