Azkaban3.81.0介绍

介绍

Azkaban 是一款开源的分布式工作流调度工具,由 LinkedIn 开发并捐赠给 Apache 社区(目前属于 Apache 顶级项目),核心用于调度、监控和管理一系列关联的任务(Job),尤其适用于大数据场景下的离线任务编排(如 Hadoop、Spark、Hive 任务等),也可支持 Shell、Python、Java 等各类脚本/程序的定时/依赖执行。

功能作用

解决“任务依赖管理”和“定时调度”两大核心问题,替代传统的 Linux Crontab(仅支持简单定时,无依赖管理和可视化监控),让复杂任务流(如“数据采集→清洗→建模→输出”)的执行、监控、故障排查更高效。

应用场景

  • 大数据离线批处理:Hive 数仓建模、Spark 离线计算、MapReduce 任务调度;
  • 数据ETL流程:数据抽取(Sqoop)→ 清洗(Python/Shell)→ 加载(HDFS/Hive);
  • 定时任务执行:日志归档、报表生成、数据库备份、接口数据同步;
  • 复杂依赖任务:多任务按顺序执行(A→B→C)、并行执行(A同时触发B和C)、条件执行(A成功则执行B,失败则执行C)。

特点

  1. 可视化界面:提供 Web 控制台,支持任务流(Flow)的创建、编辑、调度、执行状态查看、日志查看,操作直观;
  2. 强大的依赖管理:支持线性依赖(A→B→C)、并行依赖(A触发B和C)、条件依赖(基于任务执行结果判断是否执行后续任务);
  3. 灵活的调度策略:支持一次性执行、定时调度(CRON 表达式)、依赖触发(上游任务完成后自动执行下游);
  4. 丰富的任务类型支持:
    • 内置任务:Shell、Java、Hadoop(HDFS/MapReduce/YARN)、Hive、Pig、Spark、Sqoop 等;
    • 自定义任务:通过插件扩展支持 Python、Flink、数据库脚本等;
  5. 高可用性:支持集群部署(主从节点),避免单点故障,保障任务流稳定执行;
  6. 权限控制:支持用户、角色、资源(任务流、项目)的权限管理,细粒度控制操作权限(查看、编辑、执行、管理);
  7. 故障处理:任务失败时支持自动重试、手动重跑(单个任务或整个流程)、邮件/短信告警通知;
  8. 日志与审计:记录任务执行日志、操作日志,支持故障追溯和审计;
  9. 轻量化与易集成:部署简单(支持单机/集群),可与 Hadoop 生态、数据库、监控工具(如 Prometheus)无缝集成。

主要概念

  1. Project(项目):任务流的组织单位,一个项目可包含多个任务流(Flow),用于隔离不同业务的任务(如“数仓建模项目”“日志分析项目”);
  2. Flow(任务流):一组存在依赖关系的任务(Job)的集合,定义了任务的执行顺序和依赖规则(如“ETL 流程”是一个 Flow,包含“数据抽取→清洗→加载”3 个 Job);
  3. Job(任务):最小执行单元,对应一个具体的操作(如“执行一个 Shell 脚本”“运行一个 Hive SQL”“提交一个 Spark 任务”),每个 Job 需指定任务类型、参数、依赖关系;
  4. Schedule(调度计划):为 Flow 配置的执行规则,支持 CRON 表达式(如 0 0 * * * 每天凌晨执行)、依赖触发(上游 Flow 执行成功后触发当前 Flow);
  5. Execution(执行实例):Flow 被触发后生成的一次执行记录,包含执行状态(准备中/运行中/成功/失败/取消)、执行时间、任务执行详情、日志等。

核心架构(双服务架构)

Azkaban 3 采用「Web Server + Executor Server + MySQL」的架构,组件职责清晰,无冗余依赖:

核心组件

组件 核心职责
Azkaban Web Server 1. 提供 Web 操作界面(用户交互、任务流配置、状态查看);<br>2. 权限管理(用户/角色/资源授权);<br>3. 调度计划管理(解析 CRON 表达式,触发任务执行);<br>4. 向 Executor Server 下发执行指令,同步任务状态。
Azkaban Executor Server 1. 接收 Web Server 的执行请求,实际运行任务(如执行 Shell 脚本、提交 Spark 任务);<br>2. 实时上报任务执行状态(运行中/成功/失败);<br>3. 记录任务执行日志,供 Web Server 查询。
MySQL 数据库 存储元数据(核心数据):<br>- 项目信息(项目名称、描述、所有者);<br>- 任务流配置(.flow/.job 文件内容);<br>- 调度计划(CRON 表达式、触发规则);<br>- 执行历史(执行实例、任务状态、日志路径);<br>- 用户权限(用户信息、角色、权限关联)。

工作流程

  1. 开发人员编写任务流配置文件(.flow 或 .job),打包为 .zip 包;
  2. 通过 Web Server 上传 .zip 包,创建项目并配置调度计划(如 CRON 定时);
  3. Web Server 将项目信息、调度计划存储到 MySQL;
  4. 调度时间到达(或手动触发),Web Server 从 MySQL 读取任务流配置,向 Executor Server 下发执行指令;
  5. Executor Server 执行任务,实时将执行状态(如运行中、成功)写入 MySQL;
  6. 开发/运维人员通过 Web Server 查看任务状态、日志,若失败则触发重试或告警。

总结

Azkaban 是一款“轻量高效、易用性强”的分布式工作流调度工具,核心优势在于“可视化操作+灵活依赖管理+大数据生态适配”,能快速解决离线任务流的调度、监控问题。

  • 适合人群:大数据开发工程师、ETL 工程师、运维工程师(需要调度离线任务);
  • 核心场景:大数据离线批处理、ETL 流程、定时任务编排;
  • 选型建议:中小型数据团队、非超大规模任务流,优先选择 Azkaban(上手快、维护成本低);大型数据平台、复杂调度场景,可考虑 Airflow。

原文出处:/show_1GW2KNcqAObQ.html