1. 首页 > 软件下载 > 正文

Azkaban下载-批量工作流调度系统下载地址-Azkaban安装部署方法

1. Azkaban简介与版本说明

Azkaban是由LinkedIn开源的批量工作流调度系统,用于管理和调度Hadoop作业。Azkaban提供了友好的Web界面,支持工作流可视化、定时调度、依赖管理等功能。更多学习教程www.fgedu.net.cn

Azkaban最新版本:

Azkaban 4.0.0 (最新版本)
Azkaban 3.90.0 (稳定版本)
Azkaban 3.81.0 (稳定版本)
Azkaban 3.70.0 (历史版本)
Azkaban 3.57.0 (历史版本)

Azkaban架构组件:

Azkaban架构包含三个核心组件:

1. Azkaban Web Server
– 提供Web管理界面
– 处理用户请求
– 项目管理、作业调度
– 权限管理

2. Azkaban Executor Server
– 执行工作流和作业
– 支持多Executor分布式部署
– 资源管理和调度

3. MySQL数据库
– 存储项目、作业、执行记录
– 用户权限信息
– 调度配置信息

2. Azkaban下载方式

Azkaban提供源码编译和预编译包两种下载方式。学习交流加群风哥微信: itpux-com

方式一:GitHub源码下载

# 创建下载目录
$ mkdir -p /fgeudb/software/azkaban
$ cd /fgeudb/software/azkaban

# 克隆源码仓库
$ git clone https://github.com/azkaban/azkaban.git
$ cd azkaban
$ git checkout tags/4.0.0

# 编译源码
$ ./gradlew build installDist -x test

输出示例如下:
BUILD SUCCESSFUL in 5m 30s
123 actionable tasks: 123 executed

# 查看编译产物
$ ls -la azkaban-web-server/build/distributions/

输出示例如下:
total 150000
-rw-r–r– 1 root root 75000000 Apr 4 10:00 azkaban-web-server-4.0.0.tar.gz
-rw-r–r– 1 root root 75000000 Apr 4 10:00 azkaban-web-server-4.0.0.zip

$ ls -la azkaban-exec-server/build/distributions/

输出示例如下:
total 100000
-rw-r–r– 1 root root 50000000 Apr 4 10:00 azkaban-exec-server-4.0.0.tar.gz
-rw-r–r– 1 root root 50000000 Apr 4 10:00 azkaban-exec-server-4.0.0.zip

方式二:下载预编译包

# 下载Web Server
$ wget https://github.com/azkaban/azkaban/releases/download/4.0.0/azkaban-web-server-4.0.0.tar.gz

# 下载Executor Server
$ wget https://github.com/azkaban/azkaban/releases/download/4.0.0/azkaban-exec-server-4.0.0.tar.gz

# 下载SQL脚本
$ wget https://github.com/azkaban/azkaban/releases/download/4.0.0/azkaban-db-4.0.0.tar.gz

# 查看下载文件
$ ls -lh

输出示例如下:
total 170M
-rw-r–r– 1 root root 75M Apr 4 10:00 azkaban-web-server-4.0.0.tar.gz
-rw-r–r– 1 root root 50M Apr 4 10:00 azkaban-exec-server-4.0.0.tar.gz
-rw-r–r– 1 root root 45M Apr 4 10:00 azkaban-db-4.0.0.tar.gz

方式三:国内镜像下载

# 使用Gitee镜像
$ git clone https://gitee.com/mirrors/azkaban.git
$ cd azkaban
$ git checkout tags/4.0.0

# 或使用华为云镜像
$ wget https://mirrors.huawei.com/github.com/azkaban/azkaban/releases/download/4.0.0/azkaban-web-server-4.0.0.tar.gz

3. Azkaban安装部署

Azkaban需要部署Web Server、Executor Server和MySQL数据库。学习交流加群风哥QQ113257174

步骤1:创建数据库

# 登录MySQL
$ mysql -h 192.168.1.51 -u root -proot123

# 创建Azkaban数据库
mysql> CREATE DATABASE azkaban DEFAULT CHARACTER SET utf8mb4;

# 创建Azkaban用户
mysql> CREATE USER ‘azkaban’@’%’ IDENTIFIED BY ‘azkaban123’;
mysql> GRANT ALL PRIVILEGES ON azkaban.* TO ‘azkaban’@’%’;
mysql> FLUSH PRIVILEGES;

# 导入数据库脚本
$ mysql -h 192.168.1.51 -u azkaban -pazkaban123 azkaban < /fgeudb/software/azkaban/azkaban-db-4.0.0/create-all-sql-4.0.0.sql # 验证表创建 mysql> USE azkaban; mysql> SHOW TABLES; 输出示例如下: +----------------------+ | Tables_in_azkaban | +----------------------+ | active_executing_flows| | active_schedules | | execution_flows | | execution_jobs | | execution_logs | | executor_events | | executors | | project_events | | project_files | | project_flows | | project_permissions | | project_properties | | project_versions | | projects | | properties | | triggers | | users | +----------------------+

步骤2:解压安装

# 解压Web Server
$ cd /fgeudb
$ tar -zxvf /fgeudb/software/azkaban/azkaban-web-server-4.0.0.tar.gz
$ mv azkaban-web-server-4.0.0 azkaban-web

# 解压Executor Server
$ tar -zxvf /fgeudb/software/azkaban/azkaban-exec-server-4.0.0.tar.gz
$ mv azkaban-exec-server-4.0.0 azkaban-exec

# 查看目录结构
$ ls -la /fgeudb/azkaban-web/

输出示例如下:
total 16
drwxr-xr-x 2 root root 4096 Apr 4 10:00 bin
drwxr-xr-x 2 root root 4096 Apr 4 10:00 conf
drwxr-xr-x 2 root root 4096 Apr 4 10:00 lib
drwxr-xr-x 2 root root 4096 Apr 4 10:00 web

$ ls -la /fgeudb/azkaban-exec/

输出示例如下:
total 16
drwxr-xr-x 2 root root 4096 Apr 4 10:00 bin
drwxr-xr-x 2 root root 4096 Apr 4 10:00 conf
drwxr-xr-x 2 root root 4096 Apr 4 10:00 lib
drwxr-xr-x 2 root root 4096 Apr 4 10:00 plugins

步骤3:配置Web Server

# 编辑azkaban.properties
$ vi /fgeudb/azkaban-web/conf/azkaban.properties

# Azkaban配置
azkaban.name= Azkaban
azkaban.label= Workflow Scheduler
azkaban.color=#FF360A

# 数据库配置
database.type=mysql
mysql.port=3306
mysql.host=192.168.1.51
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban123
mysql.numconnections=100

# Web Server配置
web.resource.dir=/fgeudb/azkaban-web/web
default.timezone.id=Asia/Shanghai
jetty.port=8081
jetty.use.ssl=false
jetty.maxThreads=25

# Executor配置
azkaban.use.multiple.executors=true
azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
azkaban.executorselector.comparator.Memory=1
azkaban.executorselector.comparator.LastDispatched=1
azkaban.executorselector.comparator.CpuUsage=1

# 创建管理员用户
$ vi /fgeudb/azkaban-web/conf/azkaban-users.xml

<azkaban-users>
<user groups=”azkaban” password=”azkaban” roles=”admin” username=”azkaban”/>
<user password=”admin” roles=”admin” username=”admin”/>
<role name=”admin” permissions=”ADMIN”/>
<role name=”metrics” permissions=”METRICS”/>
</azkaban-users>

步骤4:配置Executor Server

# 编辑azkaban.properties
$ vi /fgeudb/azkaban-exec/conf/azkaban.properties

# Azkaban配置
azkaban.name= Azkaban
default.timezone.id=Asia/Shanghai

# 数据库配置
database.type=mysql
mysql.port=3306
mysql.host=192.168.1.51
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban123
mysql.numconnections=100

# Executor配置
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30

# 全局属性
azkaban.project.dir=/fgeudb/azkaban-exec/projects

# 创建项目目录
$ mkdir -p /fgeudb/azkaban-exec/projects

步骤5:启动服务

# 启动Executor Server
$ cd /fgeudb/azkaban-exec
$ bin/start-exec.sh

输出示例如下:
Starting azkaban-exec-server on port 12321 …

# 激活Executor
$ curl -G “192.168.1.51:$(<./executor.port)/executor?action=activate" && echo 输出示例如下: {"status":"success"} # 启动Web Server $ cd /fgeudb/azkaban-web $ bin/start-web.sh 输出示例如下: Starting azkaban-web-server on port 8081 ... # 验证服务状态 $ jps 输出示例如下: 12345 AzkabanWebServer 12346 AzkabanExecutorServer # 检查端口 $ netstat -tlnp | grep -E "8081|12321" 输出示例如下: tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 12345/java tcp 0 0 0.0.0.0:12321 0.0.0.0:* LISTEN 12346/java

生产环境建议:Executor Server启动后必须调用激活接口才能正常工作。建议部署多个Executor Server实现高可用和负载均衡。数据库连接池大小根据并发作业数量调整。

4. Azkaban配置详解

Azkaban配置包括Web Server配置、Executor Server配置和插件配置。风哥提示:正确配置时区和数据库连接是Azkaban正常运行的前提。

Web Server核心配置

# azkaban.properties核心配置

# 基本配置
azkaban.name= Azkaban # 系统名称
azkaban.label=Workflow Scheduler # 系统标签
default.timezone.id=Asia/Shanghai # 时区设置

# 数据库配置
database.type=mysql
mysql.host=192.168.1.51
mysql.port=3306
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban123
mysql.numconnections=100

# Jetty配置
jetty.port=8081 # Web服务端口
jetty.use.ssl=false # 是否启用SSL
jetty.maxThreads=25 # 最大线程数
jetty.ssl.port=8443 # SSL端口

# Executor选择策略
azkaban.use.multiple.executors=true # 启用多Executor
azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1

# 通知配置
mail.enabled=true
mail.host=smtp.fgedu.net.cn
mail.port=25
mail.username=azkaban@fgedu.net.cn
mail.password=mail123

Executor Server核心配置

# azkaban.properties核心配置

# 基本配置
default.timezone.id=Asia/Shanghai

# 数据库配置
database.type=mysql
mysql.host=192.168.1.51
mysql.port=3306
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban123

# Executor配置
executor.maxThreads=50 # 最大线程数
executor.port=12321 # Executor端口
executor.flow.threads=30 # 流程线程数

# 项目目录
azkaban.project.dir=/fgeudb/azkaban-exec/projects

# 资源配置
memoryCheck.interval=30 # 内存检查间隔
flow.num.job.threads=10 # 作业线程数

5. 项目创建与作业配置

Azkaban使用项目来组织工作流,每个项目可以包含多个Flow。更多学习教程公众号风哥教程itpux_com

步骤1:创建项目

# 访问Azkaban Web界面
# URL: http://192.168.1.51:8081

# 登录信息
用户名: admin
密码: admin

# 创建项目步骤:
# 1. 点击”Create Project”
# 2. 输入项目名称: fgedu_etl
# 3. 输入项目描述: ETL Workflow
# 4. 点击”Create Project”

步骤2:创建作业文件

# 创建作业目录
$ mkdir -p /fgeudb/azkaban-jobs/fgedu_etl
$ cd /fgeudb/azkaban-jobs/fgedu_etl

# 创建Sqoop导入作业
$ vi sqoop_import.job

type=command
command=/fgeudb/sqoop/bin/sqoop import \
–connect jdbc:mysql://192.168.1.51:3306/fgedu_db \
–username root \
–password root123 \
–table orders \
–target-dir /user/hadoop/orders \
–num-mappers 4

# 创建Hive处理作业
$ vi hive_process.job

type=command
dependencies=sqoop_import
command=/fgeudb/hive/bin/hive -f /fgeudb/scripts/process_orders.hql

# 创建Spark分析作业
$ vi spark_analysis.job

type=command
dependencies=hive_process
command=/fgeudb/spark/bin/spark-submit \
–class com.fgedu.spark.OrderAnalysis \
–master yarn \
–deploy-mode cluster \
/fgeudb/jars/spark-jobs.jar \
/user/hadoop/orders \
/user/hadoop/output

# 创建数据质量检查作业
$ vi data_quality.job

type=command
dependencies=spark_analysis
command=sh /fgeudb/scripts/check_data_quality.sh

# 创建通知作业
$ vi send_email.job

type=command
dependencies=data_quality
command=echo “ETL workflow completed successfully” | mail -s “ETL Notification” admin@fgedu.net.cn

步骤3:打包上传项目

# 打包作业文件
$ cd /fgeudb/azkaban-jobs/fgedu_etl
$ zip -r fgedu_etl.zip *.job

# 查看打包内容
$ unzip -l fgedu_etl.zip

输出示例如下:
Archive: fgedu_etl.zip
Length Date Time Name
——— ———- —– —-
256 2026-04-04 10:00 sqoop_import.job
128 2026-04-04 10:00 hive_process.job
256 2026-04-04 10:00 spark_analysis.job
128 2026-04-04 10:00 data_quality.job
128 2026-04-04 10:00 send_email.job
——— ——-
896 5 files

# 上传项目
# 1. 在Web界面选择项目 fgedu_etl
# 2. 点击”Upload”按钮
# 3. 选择 fgedu_etl.zip 文件
# 4. 点击”Upload”完成上传

步骤4:执行工作流

# 在Web界面执行工作流
# 1. 选择项目 fgedu_etl
# 2. 点击”Flows”标签
# 3. 选择工作流 send_email (最后一个作业会显示整个流程)
# 4. 点击”Execute Flow”
# 5. 配置执行参数(可选)
# 6. 点击”Execute Flow”开始执行

# 查看执行状态
# 在”Executing”页面可以看到正在执行的工作流
# 点击工作流可以查看详细执行日志

# 执行日志示例:
26/04/04 10:00:00 INFO sqoop_import: Starting command execution
26/04/04 10:00:30 INFO sqoop_import: Command completed successfully
26/04/04 10:00:30 INFO hive_process: Starting command execution
26/04/04 10:01:00 INFO hive_process: Command completed successfully
26/04/04 10:01:00 INFO spark_analysis: Starting command execution
26/04/04 10:01:30 INFO spark_analysis: Command completed successfully
26/04/04 10:01:30 INFO data_quality: Starting command execution
26/04/04 10:01:45 INFO data_quality: Command completed successfully
26/04/04 10:01:45 INFO send_email: Starting command execution
26/04/04 10:01:46 INFO send_email: Command completed successfully

6. 定时调度配置

Azkaban支持灵活的定时调度配置,可以设置周期性执行工作流。from:www.itpux.com

步骤1:创建定时任务

# 在Web界面创建定时任务
# 1. 选择项目和Flow
# 2. 点击”Schedule Flow”
# 3. 配置调度时间:
# – 时区: Asia/Shanghai
# – 执行时间: 02:00
# – 重复周期: 每天执行
# – 开始日期: 2026-04-01
# – 结束日期: 2027-04-01
# 4. 点击”Schedule”保存

# 调度配置说明:
# – Minutes: 0-59
# – Hours: 0-23
# – Day of Month: 1-31
# – Month: 1-12
# – Day of Week: 1-7 (1=周日)
# – Year: 年份

# 每天凌晨2点执行示例:
Minutes: 0
Hours: 2
Day of Month: *
Month: *
Day of Week: *

步骤2:配置调度选项

# 高级调度选项

# 失败重试配置
failure.emails=admin@fgedu.net.cn,ops@fgedu.net.cn
success.emails=admin@fgedu.net.cn
notify.first.failure=true
retries=3
retry.backoff=60000

# 并发配置
concurrent.skip.enabled=true

# SLA配置
sla.emails=admin@fgedu.net.cn
sla.duration=1h
sla.email.action=FINISH

步骤3:管理定时任务

# 查看定时任务列表
# 在Web界面点击”Schedule”标签

# 暂停定时任务
# 点击定时任务右侧的”Pause”按钮

# 恢复定时任务
# 点击定时任务右侧的”Resume”按钮

# 删除定时任务
# 点击定时任务右侧的”Remove”按钮

# 手动触发执行
# 点击定时任务右侧的”Execute”按钮

7. Azkaban监控运维

Azkaban提供Web界面和API进行监控和管理。

步骤1:查看执行历史

# 在Web界面查看执行历史
# 1. 点击”History”标签
# 2. 可以按项目、时间范围筛选
# 3. 点击执行记录查看详细日志

# 查看作业执行日志
# 1. 选择执行记录
# 2. 点击”Job Details”
# 3. 查看”Logs”标签

# 日志输出示例:
26/04/04 10:00:00 INFO job: Job started
26/04/04 10:00:00 INFO job: Running command: sqoop import …
26/04/04 10:00:05 INFO job: Output: 26/04/04 10:00:05 INFO sqoop.Sqoop: Running Sqoop version: 1.4.7
26/04/04 10:00:30 INFO job: Output: 26/04/04 10:00:30 INFO mapreduce.ImportJobBase: Transferred 125.5 MB
26/04/04 10:00:30 INFO job: Job completed successfully

步骤2:使用API管理

# 获取Session ID
$ curl -k -X POST –data “action=login&username=admin&password=admin” https://192.168.1.51:8081/api

输出示例如下:
{“session.id”:”abc123def456″,”status”:”success”}

# 获取项目列表
$ curl -k –get –data “session.id=abc123def456” https://192.168.1.51:8081/manager?action=fetchProjects

输出示例如下:
{“projects”:[{“id”:1,”name”:”fgedu_etl”}]}

# 执行工作流
$ curl -k -X POST –data “session.id=abc123def456&ajax=executeFlow&project=fgedu_etl&flow=send_email” https://192.168.1.51:8081/executor

输出示例如下:
{“execid”:1,”status”:”success”}

# 查看执行状态
$ curl -k –get –data “session.id=abc123def456&ajax=fetchExecFlow&execid=1” https://192.168.1.51:8081/executor

输出示例如下:
{“execid”:1,”status”:”SUCCEEDED”,”startTime”:1712217600000,”endTime”:1712217700000}

# 取消执行
$ curl -k -X POST –data “session.id=abc123def456&ajax=cancelFlow&execid=1” https://192.168.1.51:8081/executor

步骤3:配置监控告警

# 配置邮件告警
# 在项目设置中配置通知邮箱

# 失败通知配置
$ vi /fgeudb/azkaban-web/conf/azkaban.properties

mail.enabled=true
mail.host=smtp.fgedu.net.cn
mail.port=25
mail.username=azkaban@fgedu.net.cn
mail.password=mail123
mail.tls=true

# 配置作业级通知
$ vi /fgeudb/azkaban-jobs/fgedu_etl/send_email.job

type=command
dependencies=data_quality
command=echo “ETL workflow completed” | mail -s “ETL Notification” admin@fgedu.net.cn
failure.emails=admin@fgedu.net.cn
success.emails=admin@fgedu.net.cn
notify.first.failure=true

步骤4:运维管理

# 查看Executor状态
$ curl -k –get –data “session.id=abc123def456&ajax=getExecutors” https://192.168.1.51:8081/api

输出示例如下:
{“executors”:[{“executorId”:1,”host”:”192.168.1.51″,”port”:12321,”active”:true}]}

# 重启Web Server
$ cd /fgeudb/azkaban-web
$ bin/shutdown-web.sh
$ bin/start-web.sh

# 重启Executor Server
$ cd /fgeudb/azkaban-exec
$ bin/shutdown-exec.sh
$ bin/start-exec.sh

# 激活Executor
$ curl -G “192.168.1.51:$(<./executor.port)/executor?action=activate" && echo # 查看日志 $ tail -f /fgeudb/azkaban-web/logs/azkaban-webserver.log $ tail -f /fgeudb/azkaban-exec/logs/azkaban-execserver.log

生产环境建议:部署多个Executor Server实现高可用,配置负载均衡策略。定期清理历史执行记录,避免数据库膨胀。配置完善的监控告警,及时发现作业异常。对于关键作业,建议配置失败重试和通知机制。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息