一、简介
Azkaban是一个开源的批量工作流任务调度器
用于在一个工作流内以一个特定的顺序运行一组工作和流程
Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流
二、工作流调度系统
1.为什么需要工作流调度系统
1 .一个完整的数据分析系统通常都是由大量任务单元组成:
- shell脚本程序,java程序,mapreducer程序,hive脚本等
2 .各任务单元之间存在时间先后及前后依赖关系
3 .为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行
例如:我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下:
- 1 .通过Hadoop先将原始数据上传到HDFS上(HDFS的操作)
- 2 .使用MapReduce对原始数据进行清洗(MapReduce的操作)
- 3 .将清洗后的数据导入到hive表中(hive的导入操作)
- 4 .对Hive中多个表的数据进行JOIN处理,得到一张hive的明细表(创建中间表)
- 5 .通过对明细表的统计和分析,得到结果报表信息(hive的查询操作)(聚合操作)
2.常见工作流调度系统
- 简单的任务调度:直接使用crontab实现;
- 复杂的任务调度:开发调度平台或使用现成的开源调度系统,比如ooize、azkaban等
3.ooize和azkaban特性对比
下面的表格对上述四种hadoop工作流调度器的关键特性进行了比较,尽管这些工作流调度器能够解决的需求场景基本一致,但在设计理念、目标用户,应用场景等方面还是存在显著的区别,在做技术选型的时候,可以提供参考:
三、功能特点
- 兼容任何版本的hadoop
- 提供功能清晰,简单易用的Web UI界面
- 简单的工作流上传
- 提供job配置文件快速建立任务和任务之间的依赖关系
- 工作流调度
- 提供模块化和可插拔的插件机制,原生支持command、java、Hive、Pig、Hadoop
- 认证/授权(权限的工作)
- 能够杀死并重新启动工作流
- 有关失败和成功的电子邮件提醒
- 项目工作区
- 工作流和任务的日志记录和审计
- 基于java开发,代码结构清晰,易于二次开发
四、原理架构
- AzkabanWeb Serve:AzkabanWebServer是整个Azkaban工作流系统的主要管理者,对外提供web服务,使用户可以通过web页面管理。指责包括项目管理、权限授权、任务调度、监控executor
- AzkabanExcutor Server:负责具体的工作流的提交、执行,它们通过mysql数据库来协调任务的执行
- 关系型数据库(MySQL):存储元数据,如项目名称、项目描述、项目权限、任务状态、SLA规则等,AzkabanWeb Server、AzkabanExcutor Server都需要访问数据库