工作流调度器Azkaban和Oozie的对比
工作流调度器的介绍
(1)为什么要使用工作流调度器?
- 一个完整的数据分析系统通常都是由大量任务单元组成:shell 脚本程序,java 程序,mapreduce 程序、hive 脚本等
- 各任务单元之间存在时间先后及前后依赖关系
- 为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行
(2)常见工作流调度器
在 hadoop 领域,常见的工作流调度器有 Oozie, Azkaban,Cascading,Hamake 等 。
Oozie与Azkaban的对比
目前企业中最流行的两种调度器是Oozie与Azkaban。总的来说ooize 相比 azkaban 是一个重量级的任务调度系统,功能全面,但配置使用也更复杂。如果可以不在意某些功能的缺失,轻量级调度器 azkaban 是很不错的候选对象。
二者的区别可以从以下的几个方面进行描述:
1.功能
两者均可以调度 mapreduce,pig,java,脚本工作流任务两者均可以定时执行工作流任务
2.工作的定义
Azkaban 使用 Properties 文件定义工作流
Oozie 使用 XML 文件定义工作流
3.工作流传参
Azkaban 支持直接传参,例如 ${input}
Oozie 支持参数和 EL 表达式,例如 ${fs:dirSize(myInputDir)} strust2(ONGL)
4.定时执行
Azkaban 的定时执行任务是基于时间的
Oozie 的定时执行任务基于时间和输入数据
5.资源管理
Azkaban 有较严格的权限控制,如用户对工作流进行读/写/执行等操作
Oozie 暂无严格的权限控制
6.记录workflow的状态:
Azkaban将正在执行的workflow状态保存在内存中
Oozie将其保存在Mysql中。
7.出现失败的情况:
Azkaban会丢失所有的工作流
但是Oozie可以在继续失败的工作流运行
8.工作流执行
Azkaban 有两种运行模式,分别是 solo server mode(executor server 和 web server 部署在同一台节点)和 multi server mode(executor server 和 web server 可以部署在不同节点)
Oozie 作为工作流服务器运行,支持多用户和多工作流
9.操作工作流
Azkaban 支持浏览器以及 ajax 方式操作工作流
Oozie 支持命令行、HTTP REST、Java API、浏览器操作工作流