Azkaban3.81.0编译后的组件:azkaban-web-server、azkaban-exec-server、azkaban-db、azkaban-solo-server 作者:马育民 • 2025-12-02 07:23 • 阅读:10000 # 介绍 编译成功后,主要有下面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 界面添加用户/角色。 原文出处:http://malaoshi.top/show_1GW2KbqEGYIf.html