简单的任务调度:直接使用crontab
大数据-工作流任务调度器:ooize、azkaban、airflow
一、工作流任务调度器简介
什么是工作流? 业务过程的部分或整体在计算机应用环境下的自动化
工作流具有特点:
- 整个流程可以被分为多个节点
- 各个节点存在依赖关系(前序没有干, 后续就无法执行)
- 此流程需要周而复始不断的干
总结: 如果以后发现有个任务满足了以上三个特征, 那么就可以尝试使用工作流来解决
请问, 大数据的开发流程, 是否可以使用工作流呢? 一定是可以的
如何来实现工作流呢? apache oozie 和 领英公司 azkaban
单独使用角度: azkaban比oozie更加的方便
- azkaban: 是由领英提供的一款工作流的调度工具, 其内部主要采用通过配置类似于properties文件来定义工作流, 此定义方式更加的方便, 而且领英宣称 只要是能够使用shell命令执行的软件, 统统都可以使用azkaban完成调度, 所以说azkaban本质上就是一个shell调度客户端
- oozie: apache旗下的, 出现时间较早, 是大数据一款工作流的调度工具, oozie采用xml方式来完成工作流调度, oozie在单独使用下, 配置是极其复杂的, 而且oozie所提供管理界面 异常难用, 比较慢
如何是结合HUE来使用呢?
- azkaban: 由于azkaban是由领英公司开源, 并不属于apache环境, 所以HUE对其是不支持的, 如果需要使用azkaban, 需要单独维护一套azkaban调度环境
- ooize: 是由apache开源, 属于apache怀抱下产品, 同时HUE也是apache旗下的, HUE如果要整合一款调度工具, 必然会选择自家产品 , 所以HUE是可以直接和oozie进行整合, 整合之后, 用户只需要通过鼠标点一点方式即可完成工作流的配置
当结合HUE来使用,ooize要比azkaban更加方便,同时也是同源产品, 兼容性也会更好, 不需要单独维护。
二、Oozie和Azkaban对比
- Oozie是基于Hadoop系统进行操作,而Azkaban是基于命令行进行操作。使用hadoop提供的第三方包JobClient比直接在底层跑shell命令开发成本小,可能遇到的坑也少(一个是基于Hadoop平台,一个是基于Linux系统)。
- Oozie的操作是放在Hadoop中,而Azkaban的运行是服务器运行shell命令。 为保证服务器的稳定,使用Oozie靠谱点。
- Ooize提供查询任务执行状态,Azkaban查询的是进程执行的结果,如果某进程执行的shell命令出错,其进程仍展示位成功,混淆了任务输出。
- Oozie将任务执行的状态持久化到数据库中,Azkaban将任务的状态存储在服务器内存中,如果掉电,则Azkaban会丢失任务信息。
- Ooize中定义的action类型更为丰富,而Azkaban中的依赖较为简单,当面对复杂的逻辑时Oozie执行的比较顺畅。
- 两者均可以通过WEB界面进行配置操作,Azkaban和Oozie均拥有自带WEB,而Oozie同时还被HUE集成,通过HUE集成管理,可以更加方便的在Web页面上完成workflow的启动、停止、恢复。
- CDH原生支持Oozie,而Azkaban还需要额外的编译及安装配置。
三、Oozie调度示例
1、查看已有的oozie程序
2、新增oozie程序的workflow
提交任务
3、新增oozie程序的计划任务(基于workflow)