一、简介

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的查询操作)(聚合操作)
    不是Azkaban囚徒而是开源Azkaban的介绍【无配置】

2.常见工作流调度系统

  • 简单的任务调度:直接使用crontab实现;
  • 复杂的任务调度:开发调度平台或使用现成的开源调度系统,比如ooize、azkaban等

3.ooize和azkaban特性对比

下面的表格对上述四种hadoop工作流调度器的关键特性进行了比较,尽管这些工作流调度器能够解决的需求场景基本一致,但在设计理念、目标用户,应用场景等方面还是存在显著的区别,在做技术选型的时候,可以提供参考:
不是Azkaban囚徒而是开源Azkaban的介绍【无配置】

三、功能特点

  1. 兼容任何版本的hadoop
  2. 提供功能清晰,简单易用的Web UI界面
  3. 简单的工作流上传
  4. 提供job配置文件快速建立任务和任务之间的依赖关系
  5. 工作流调度
  6. 提供模块化和可插拔的插件机制,原生支持command、java、Hive、Pig、Hadoop
  7. 认证/授权(权限的工作)
  8. 能够杀死并重新启动工作流
  9. 有关失败和成功的电子邮件提醒
  10. 项目工作区
  11. 工作流和任务的日志记录和审计
  12. 基于java开发,代码结构清晰,易于二次开发

四、原理架构

不是Azkaban囚徒而是开源Azkaban的介绍【无配置】

  1. AzkabanWeb Serve:AzkabanWebServer是整个Azkaban工作流系统的主要管理者,对外提供web服务,使用户可以通过web页面管理。指责包括项目管理、权限授权、任务调度、监控executor
  2. AzkabanExcutor Server:负责具体的工作流的提交、执行,它们通过mysql数据库来协调任务的执行
  3. 关系型数据库(MySQL):存储元数据,如项目名称、项目描述、项目权限、任务状态、SLA规则等,AzkabanWeb Server、AzkabanExcutor Server都需要访问数据库

相关文章: