Azkaban3.81.0编译后的组件:azkaban-web-server、azkaban-exec-server、azkaban-db、azkaban-solo-server

介绍

编译成功后,主要有下面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组件

协同工作流程

  1. 用户操作:用户通过 web-server 的 Web 界面创建项目、上传任务流配置(.zip 包)、配置 CRON 调度;
  2. 数据存储:web-server 将项目信息、任务流配置、调度计划写入 azkaban-db;
  3. 调度触发:到达调度时间(或手动触发),web-server 从 azkaban-db 读取任务流配置,选择可用的 exec-server 并下发执行指令;
  4. 任务执行:exec-server 接收指令,加载任务环境,执行任务,实时将执行状态上报给 web-server;
  5. 状态同步:web-server 将 exec-server 上报的状态写入 azkaban-db,并在 Web 界面更新展示;
  6. 结果反馈:任务执行完成后,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 界面添加用户/角色。

原文出处:/show_1GW2KbqEGYIf.html