介绍
编译成功后,主要有下面3个组件:
- azkaban-web-server.tar.gz
- azkaban-exec-server.tar.gz
- azkaban-db.tar.gz
- azkaban-solo-server.tar.gz
azkaban-web-server.tar.gz
可视化 Web 控制台:负责用户交互、任务流管理、调度触发、权限控制,是用户操作和系统调度的核心入口
编译后的位置
/program/azkaban-3.81.0/azkaban-web-server/build/distributions/
主要功能
- 可视化 Web 控制台:提供图形化界面,支持项目创建、任务流(Flow)上传/编辑、调度计划配置(CRON)、执行状态监控、日志查看、手动重跑/终止任务等操作;
- 任务流调度管理:解析 CRON 表达式,在指定时间触发任务流执行;支持依赖触发(上游任务流成功后触发下游)、手动触发;
- 请求分发与状态同步:接收用户执行请求,将任务分配给
azkaban-exec-server执行;实时同步exec-server上报的任务执行状态(运行中/成功/失败); - 权限与安全控制:管理用户、角色、资源(项目/任务流)的权限(如查看、编辑、执行、管理员权限);支持密码认证、HTTPS 加密;
- 告警通知:任务执行成功/失败/超时后,触发邮件、短信等告警(需配置);
- 元数据管理:将项目信息、任务流配置、调度计划、执行历史等元数据写入
azkaban-db,并从数据库读取数据用于界面展示。
关键特性
- 无状态服务(可集群部署,通过 Nginx 负载均衡),避免单点故障;
- 不直接执行任务,仅负责“调度”和“管控”,轻量级设计;
- 依赖
azkaban-db存储所有核心数据,自身不存储持久化信息。
azkaban-exec-server.tar.gz
接收 web-server 下发的任务执行指令,运行具体任务(如 Shell 脚本、Spark 任务、Hive SQL 等)
编译后的位置
/program/azkaban-3.81.0/azkaban-exec-server/build/distributions/
主要功能
- 任务执行:接收
web-server下发的任务执行指令,运行具体任务(如 Shell 脚本、Spark 任务、Hive SQL 等); - 环境适配:加载任务所需的运行环境(如 Hadoop/Spark 环境变量、依赖包),确保任务在正确的环境中执行;
- 状态上报:实时将任务执行状态(准备中→运行中→成功/失败)、执行日志路径上报给
web-server,最终写入azkaban-db; - 日志管理:记录任务执行的详细日志(标准输出、错误输出),存储在本地磁盘或分布式存储(如 HDFS),供
web-server调用展示; - 故障处理:支持任务自动重试(按配置的重试次数)、手动重跑(接收
web-server的重跑指令);
关键特性
- 有状态服务(每个节点存储本地任务日志),支持集群部署(多节点负载均衡,
web-server可手动分配任务); - 任务执行的“隔离性”:不同任务流的任务在独立进程中执行,避免相互干扰;
- 资源控制:可配置单个
exec-server的最大并发任务数,避免资源耗尽。
azkaban-db.tar.gz
建表语句
将所有元数据和运行时数据存储到数据库,是 web-server 和 exec-server 协同工作的桥梁。
编译后的位置
/program/azkaban-3.81.0/azkaban-db/build/distributions/
支持的数据库
仅支持 MySQL(Azkaban 3.x 推荐 5.6/5.7,不支持 MySQL 8.0),需提前创建数据库并初始化表结构(Azkaban 源码提供初始化 SQL 脚本)。
web-server、exec-server、db组件
协同工作流程
- 用户操作:用户通过
web-server的 Web 界面创建项目、上传任务流配置(.zip 包)、配置 CRON 调度; - 数据存储:
web-server将项目信息、任务流配置、调度计划写入azkaban-db; - 调度触发:到达调度时间(或手动触发),
web-server从azkaban-db读取任务流配置,选择可用的exec-server并下发执行指令; - 任务执行:
exec-server接收指令,加载任务环境,执行任务,实时将执行状态上报给web-server; - 状态同步:
web-server将exec-server上报的状态写入azkaban-db,并在 Web 界面更新展示; - 结果反馈:任务执行完成后,
web-server按配置触发告警(如失败邮件),用户可通过 Web 界面查看执行日志和结果。
关系总结
| 组件 | 与其他组件的关系 | 核心依赖 |
|---|---|---|
| azkaban-web-server | 依赖 azkaban-db 存储数据,依赖 exec-server 执行任务 |
MySQL 连接、exec-server 节点列表 |
| azkaban-exec-server | 依赖 web-server 接收指令,依赖 azkaban-db 上报状态 |
MySQL 连接、web-server 调度指令 |
| azkaban-db | 被 web-server 和 exec-server 读写,无依赖其他组件 |
MySQL 服务可用性、表结构完整性 |
azkaban-solo-server.tar.gz
azkaban-solo-server(单机模式)是 Azkaban 提供的一体化单机部署方案,核心是将 azkaban-web-server(Web 服务)、azkaban-exec-server(执行服务)、嵌入式数据库(H2) 集成在一个进程中,无需额外部署独立数据库和多服务节点,是 Azkaban 最简化的部署形态。
一句话解释: azkaban-solo-server 本质是“三合一”集成包
编译后的位置
/program/azkaban-3.81.0/azkaban-solo-server/build/distributions/
典型适用场景
- 开发测试环境:开发人员本地调试 ETL 任务流、验证依赖配置;
- 小型单机场景:个人项目、少量定时任务(≤10 个任务流)、非核心业务的离线调度;
- 学习入门:快速体验 Azkaban 功能,无需复杂集群配置。
不适用场景
- 生产环境:无高可用(单进程故障导致整个系统不可用)、无负载均衡(无法分担任务压力);
- 大规模任务:并发任务数多(如每秒数十个任务)、任务流复杂(多依赖、大数据量任务),会导致单机资源耗尽。
核心组件集成(单进程内)
| 集成组件 | 作用 | 与独立部署的区别 |
|---|---|---|
| Web Server(Web 服务) | 提供可视化 Web 界面,负责用户操作、调度触发、权限管理 | 与独立版功能一致,仅运行在单进程中 |
| Exec Server(执行服务) | 执行具体任务(Shell/Spark/Hive 等),上报执行状态 | 无集群能力,仅本地执行任务 |
| H2 嵌入式数据库 | 存储元数据(项目、任务流配置、调度计划、执行历史) | 无需独立部署 MySQL,数据存储在本地文件中 |
关键特性
- 部署简单:仅需 JDK 1.8 环境,解压后修改端口、日志路径即可启动;
- 功能完整:支持
.job/.flow配置文件、CRON 定时、依赖管理、手动重跑、日志查看; - 数据存储:H2 数据库文件默认存储在
solo-server/data目录(文件名为azkaban.db),可直接备份该文件迁移数据; - 资源占用低:单进程运行,默认占用内存较小(可通过
conf/azkaban.properties调整 JVM 参数); - 权限简化:默认提供
admin/admin管理员账号,可在 Web 界面添加用户/角色。