概括
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 | 不支持
|