一、概述
Azkaban来自LinkedIn公司,用于管理他们的Hadoop批处理工作流。日常生产环境中,为了得到想要的数据,通常需要执行很多作业,一批作业执行完毕,再将中间结果进一步处理,最后得到有价值的数据,因此作业之间执行有先后顺序和依赖关系。这样的一组作业称为一个工作流,Azkaban就是用来构建、运行和管理工作流的工具,它提供友好的Web用户界面来维护和跟踪用户的工作流程。
简单来讲,它有几个特点:
- 兼容各个版本的hadoop
- 用户可通过web页面提交工作流
- 工作流调度
- 系统模块化支持插件开发
- 用户认证和权限验证
- 用户操作追踪
- 任务执行结果邮件报警
- 按照SLA执行报警和杀作业
- 失败作业重试
Azkaban已经在LinkedIn运行了好几年,管理着很多Hadoop和数据仓库作业流,具有很强的可用性。项目主页:http://azkaban.github.io/azkaban2/
二、系统结构
Azkaban目前有2个大版本,azkaban1.x和azkaban2.x,1系结构比较简单,不需要依赖数据库,执行器和调度器以及webServer都集成在一起,缺点是没有用户和权限管理,其它功能不够丰富,随着用户规模增大和系统健壮性需求,azkaban系统演进到最新2.2版本,不过感兴趣的童鞋还是可以体验一下azkaban1,测试版地址在http://10.4.19.55:8030/。下面重点介绍一下azkaban2。
Azkaban2由三个重要的组件组成,mysql数据库、executor、webServer。架构图如下:
其中AzkabanWebServer除了提供web页面响应服务,还负责项目管理,认证,调度,监控和发起执行,它是azkaban的大脑。executor则负责作业的执行,对执行过程及结果进行监控,并将执行状况汇报给AzkabanWebServer,两者采用http接口进行通信。
Mysql数据库是azkaban2中加进来的组件,azkaban系统中多数数据都存储在mysql中,甚至包括用户上传的工作流文件、作业执行的日志等。executor和webServer都通过jdbc频繁地对其操作。
项目主页解释executor和webServer分离的好处是方便系统升级,后续作业规模变大,可能会出现多个executor,这样的结构方便扩展并能获得更高的可用性。上述3个组件也可以不在一台机器上部署。
azkaban2.2测试环境链接: