一个完整的数据分析系统通常都是由大量任务单元组成:shell脚本,java程序,mapreduce程序、hive脚本等。
各任务单元之间存在时间先后及前后依赖关系,为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行。
工作流调度的实现方式:
简单的任务调度:直接使用 linux 的 crontab 来定义;
复杂的任务调度:开发调度平台或使用现成的开源调度系统,比如 ooize、azkaban等。
Azkaban调度的任务的可能类型:
1、shell脚本
2、java程序
3、MR程序
4、spark程序
5、hive的sql
6、python脚本
7、sqoop任务
基本概念:
首先创建一个工程包,一个工程包含一个或多个flows,一个flow包含一个或多个job。
job是你想在azkaban中运行的一个进程,可以是简单的linux命令,可是java程序,也可以是复杂的shell脚本。
一个job可以依赖于另一个job,这种多个job和它们的依赖组成的图表叫做flow。
简单例子应用: