1. 为什么需要工作流调度系统
(1)完整的数据分析系统通常都是由大量任务单元组成;包括:shell脚本程序、java程序、mapreduce程序、hive脚本等
(2)各任务单元之间存在时间先后及前后依赖关系;
(3)为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行。
2. Azkaban是什么
(1)Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。
(2)Azkaban定义了一种KV文件(properties)格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
(3)功能特点:
- 提供功能清晰、简单易用的web UI界面
- 提供job配置文件快速建立任务和任务之间的关系
- 提供模块化的可插拔机制,原生支持command、java、hive、hadoop
- 基于java开发,代码结构清晰,易于二次开发
3. Azkaban基本架构
Azkaban由三部分构成:
(1)Azkaban Web Server
提供了Web UI,是azkaban的主要管理者,包括 project 的管理,认证,调度,对工作流执行过程的监控等。
(2)Azkaban Executor Server
负责具体的工作流和任务的调度提交。
(3)Mysql
用于保存项目、日志或者执行计划之类的信息。
4. Azkaban架构的三种运行模式
(1)solo server mode(单机模式)
H2 web server 和 executor server运行在一个进程里最简单的模式,数据库内置的H2数据库,管理服务器和执行服务器都在一个进程中运行,任务量不大项目可以采用此模式。
(2)two server mode
web server 和 executor server运行在不同的进程,数据库为mysql,管理服务器和执行服务器在不同进程,这种模式下,管理服务器和执行服务器互不影响。
(3)multiple executor mode
web server 和 executor server运行在不同的进程,executor server有多个。
该模式下,执行服务器和管理服务器在不同主机上,且执行服务器可以有多个。
5. Azkaban启动
5.1 启动web server服务
- 在azkaban web server服务器目录下执行启动命令
bin/azkaban-web-start.sh
5.2 启动executor执行服务
- 在azkaban executor服务器目录下执行启动命令
bin/azkaban-executor-start.sh
5.3页面访问
启动完成后,在浏览器中输入https://服务器IP地址:8443,如图:
6.Azkaban需要注意的问题
(1)配置文件 azkaban.properties中,只要涉及到路径的,都要将其中默认的相对路径改为绝对路径。否则会报文件不存在、 certificate_unknown等错误。