在公司的日常工作中, 经常会用到 Azkaban。作为一种工作流管理系统, 对我来说, 的确有学习的价值。
本文将会使用最新版的Azkaban源代码, 编译并搭建一套可运行调试的系统。开发工具使用的是IDEA, 运行环境是CentOS7。
从github下载源代码
截止目前,最新的tag版本是: 3.86.0
可以直接点击下载源码: 3.86.0
编译
用IDEA打开, File -> Open… -> 选择已解压的代码目录 -> 点击 OK。
此时, IDEA会自动同步一些Gradle项目的配置,稍微等待一会。
为了解决gradle项目下载依赖慢的问题, 我们可以加上阿里云的maven仓库地址。
在azkaban根目录下的 build.gradle 中加入下面内容即可:
1 | maven { url "http://maven.aliyun.com/nexus/content/groups/public" } |
加入后的效果是这样的:
1 | allprojects { |
注意: 这里需要保留原来的仓库地址, 因为有些依赖阿里云仓库下载不到
再配置一个 npm的淘宝源, 毕竟国外的不太稳定。
在用户目录下, 创建 .npmrc 文件:
1 | vi ~/.npmrc |
再加入以下内容即可:
1 | registry=https://registry.npm.taobao.org/ |
配置好之后, 我们就可以执行以下命令编译了:
1 | ./gradlew build -x test |
编译成功后, 就有了az-web 和 az-exec 的可运行程序压缩包了。
数据库、表初始化
推荐使用 MySQL5.7.x
1 | -- 创建数据库 |
调整Mysql Packet Size, 找到MySQL的配置文件,修改max_allowed_packet=1024M
1 | [mysqld] |
重启MySQL
1 | sudo /sbin/service mysqld restart |
使用初始化sql建表:
1 | # 位置 |
运行azkaban Exec节点
编译后的压缩包路径: azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.zip
1.更改配置文件
上传 azkaban-exec-server-0.1.0-SNAPSHOT.zip 到 centos 服务器上,解压。修改 azkaban-exec-server/conf/azkaban.properties 配置文件:
1 | # 数据库信息 |
2.设置远程debug
2.1 编辑文件 azkaban-exec-server/bin/internal/internal-start-executor.sh, 增加一个 AZKABAN_OPTS 值
1 | ...... |
2.2 IDEA中配置
点击编辑运行时配置 -> 点击左上角的 +
,选择 Remote 选项。配置如下图:
说明:
- Host: 为az执行节点的IP
- Port: 为 上面我们配置的那个远程debug端口
- Use module classpath: 为az-exec模块的main
点击OK即可, 需要远程服务先启动,才能进行远程debug操作。
3.运行并激活az-exec
运行:
1 | cd azkaban-exec-server |
激活:
1 | curl -G "http://192.168.3.25:12321/executor?action=activate" && echo |
- 192.168.3.25:12321 为 az执行节点的地址
此时, 可以发现azkaban库 executors 表中已经有执行节点的记录
运行azkaban Web节点
编译后的压缩包路径:
azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.zip
1.更改配置文件
上传 azkaban-web-server-0.1.0-SNAPSHOT.zip 到 centos 服务器上,解压。修改 azkaban-web-server/conf/azkaban.properties 配置文件:
1 | # 数据库信息 |
2.设置远程debug
2.1 编辑文件 azkaban-web-server/bin/internal/internal-start-web.sh, 增加一个 AZKABAN_OPTS 值
1 | ...... |
2.2 IDEA中配置
点击编辑运行时配置 -> 点击左上角的 +
,选择 Remote 选项。配置如下图:
3.运行az-web
1 | cd azkaban-web-server |
4.登录
Azkaban默认使用的xml来管理用户。配置文件目录: azkaban-web-server/conf/azkaban-users.xml
访问 http://192.168.3.25:8081, 使用azkaban/azkaban 即可登录。
- 192.168.3.25: 为 az-web的ip
- 8081: 为az-web的端口
远程调试
在 az-web 和 az-exec 都启动之后, 先确保所有端口都能正常访问, 我这儿配置的是
- az-exec服务端口: 12321
- az-exec远程debug端口: 5554
- az-web服务端口: 8091
- az-web远程debug端口: 5555
然后在IDEA中运行下图中的这两项即可。
在想要看细节的地方打上断点, 就可以愉快玩耍啦。