概括
Azkaban是一个非常轻量的开源调度框架,适合二次开发,但是无法直接用于生产环境,存在致命缺陷(比如AzkabanWebServer是单点,1年多时间没有修复),在一些情景下的行为简单粗暴(比如重启AzkabanExecutorServer会导致该server上正在运行的所有流程fail),很多时候需要人工干预,要达到生产环境的可靠性级别,至少大量二次开发,并且官方代码更新很快,合并代码有很大冲突风险,适合于一些对可靠性要求不高可以快速上手的小公司,不建议使用;
Oozie作为apache顶级项目,使用广泛,功能丰富,代码质量高,成熟可靠,代码和部署相对复杂一点,建议使用;
|
Oozie |
Azkaban |
版本 |
4.3 |
3.45 |
开发语言 |
Java |
Java |
任务配置 |
Xml文件(存放在hdfs) Properties文件 |
Properties文件(打成Zip,上传后存放在DB) |
添加任务 |
hdfs上传Xml文件后client通过Properties文件提交 |
web上传Zip AJAX上传Zip |
任务运行 |
Yarn |
AzkabanExecutorServer执行 |
分配粒度 |
任务 |
工作流 |
失败重试 |
支持 |
支持 |
扩展性 |
好,支持服务扩展、任务扩展 |
好,支持插件化、任务扩展 |
接口 |
命令行 Java API |
网页 AJAX API |
支持任务类型 |
HDFS、MapReduce、Java、Shell、SSH、Pig、Hive、E-Mail、Sub-Workflow、Sqoop、Distcp |
Shell、Java 其他需要插件支持 |
部署 |
相对复杂 |
简单 |
GUI |
开源Hue提供GUI方式编辑流程定义 |
不提供GUI编辑流程定义 |
可靠性 |
可靠 通过Zookeeper实现HA |
不可靠 AzkabanWebServer是单点,17年3月社区就提到该问题,但1年多过后还没有修复 |
重启影响 |
无 |
重启AzkabanExecutorServer会导致该server上正在运行的所有流程fail,还可能需要刷新executors状态 |
代码质量 |
非常好 |
一般,并且代码中很多TODO |
代码更新 |
慢 |
很快,小版本很多 |
任务重复运行风险 |
无 |
有 |
SLA |
支持 |
支持 |
监控 |
web-services API instrumentation log |
不支持 |
流程状态回调 |
JMS 或 oozie.coord.action.notification.url oozie.wf.workflow.notification.url oozie.wf.action.notification.url |
不支持 |