azkaban安装配置
azkaban下载:官网地址
配置教程:azkaban.readthedocs.io/en/latest/getStarted.html#
编译
下载上方的源码包后,需要使用Gradle
工具进行编译,下载地址
两个压缩包下载完成后,上传到虚拟机并解压
[root@num07 compression]# tar -zxvf azkaban-3.84.10.tar.gz
[root@num07 compression]# unzip gradle-5.6.3-all.zip
接下来,进入azkaban源码的解压包,执行解压指令:
[root@num07 compression]# cd azkaban-3.84.10
# 这里的-x test是跳过测试,指定可以减少编译时间
[root@num07 azkaban-3.84.10]# ./gradlew build installDist -x test
编译成功后,将以下三个压缩包拷贝出来:
./azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz
.//azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
./azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
接下来开始配置azkaban
配置
首先创建azkaban的安装目录,将上面的三个压缩包解压到里面
[root@num07 opt]# mkdir azkaban
[root@num07 opt]# cd azkaban/
[root@num07 azkaban]# tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
[root@num07 azkaban]# tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
[root@num07 azkaban]# tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz
[root@num07 azkaban]# mv azkaban-exec-server-0.1.0-SNAPSHOT azkaban-exec
[root@num07 azkaban]# mv azkaban-web-server-0.1.0-SNAPSHOT azkaban-web
[root@num07 azkaban]# rm -f *.gz
首先进入azkaban-exec
包下修改配置:cd azkaban-exec
vi conf/azkaban.properties
- 将默认时区改为亚洲/上海
- 修改网页服务url的IP地址
- 修改mysql的服务IP地址(azkaban将元数据保存在mysql)
- 默认的mysql用户名和密码都是
azkaban
,可以选择修改
这里可以加上一条配置项executor.port=12321
指定登录端口
上面修改完成后,到指定的主机上登录mysql,创建上面指定的azkaban
数据库和azkaban
用户:
mysql> create database azkaban;
mysql> create user 'azkaban'@'%' identified by 'azkaban';
-- 授权操作最好在数据库全部表格导入后再执行
mysql> grant select,insert,delete,update on azkaban.* to 'azkaban'@'%' with grant option;
mysql默认的比较小,在my.cnf
配置文件中增加该项配置:
max_allowed_packet=1024M
此时还有另外一项工作,创建azkaban存储在mysql中的元数据表格,在解压的azkaban-db-0.1.0-SNAPSHOT.tar.gz
解压包中,有一个create-all-sql-0.1.0-SNAPSHOT.sql
文件,是创建这些表格的脚本,可以在mysql的azkaban库中,执行source /opt/azkaban/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql
指令,创建全部表格
留意是否全部表格创建成功:
完成后重启mysql
这时可以尝试启动azkaban-exec了:
[root@num07 azkaban-exec]# bin/start-exec.sh
[root@num07 azkaban-exec]# jps
2594 AzkabanExecutorServer
2605 Jps
1886 GradleDaemon
# 可以看到AzkabanExecutorServer服务就说明启动成功了
此时登录mysql,查看azkaban.executors
表格,可以看到以下数据:
此时的用户是未激活状态,执行curl -G "num07:39779/executor?action=activate" && echo
命令激活用户
再去查看azkaban.executors
表中,active
字段值已改为1,表示已激活
azkaban-exec配置完成,接下来配置azkaban-web
cd azkaban-web/
vi conf/azkaban.properties
- 修改时区
2. 修改对应的mysqlIP、账号和密码
3. MinimumFreeMemory限制可用内存需要在6G以上,当不满足条件时将不开启web,这里为了演示将该项删除
修改azkaban-user.xml
:vi conf/azkaban-users.xml
添加一个用户,设置用户名和密码,注意将用户角色设为admin
设置完成后,就可以启动服务了:
[root@num07 azkaban-web]# bin/start-web.sh
[root@num07 azkaban-web]# jps
3505 Jps
3494 AzkabanWebServer
3239 AzkabanExecutorServer
1886 GradleDaemon
# 可以看到AzkabanWebServer服务说明启动成功了
测试
打开我们配置IP的8081端口,可以看到下面页面,输入刚才配置的用户名和密码登录
点击创建新项目
创建一个项目文件:azkaban.project
azkaban-flow-version: 2.0
创建任务文件:one.flow
nodes:
- name: firstJob
type: command
config:
command: echo "hello world"
注意使用yml格式编写,要用空格
编写完成后,将上述两个文件压缩到一个zip
(rar不可以)文件中,然后上传
点击Excete Flow
开启任务
配置任务启动选项后,点击Execute
启动任务
任务执行成功,可以在日志中看到类似信息:
问题解决
安装过程中,除编译外,绝大部分问题都出在mysql上,当需要重新导入create-all-sql-0.1.0-SNAPSHOT.sql
时,推荐把azkaban
数据库和用户都删除掉
删除用户操作:
delete from mysql.user where user='azkaban';
flush privileges;
drop user ‘azkaban’;
flush privileges;
-- 再添加用户
create user 'azkaban'@'%' identified by '123456';
导入过程中,execution_logs
表容易因为索引过长导致表格创建失败,报错原因是:INNODB 引擎,UTF-8,主键字符串 默认最大只能是767,此时有两种解决方案:
- 升级mysql数据库到5.7或以上
- 配置数据库
# 修改my.cnf文件,添加配置
innodb_large_prefix=ON
innodb_file_format=barracuda
innodb_file_per_table=ON
# 在create-all-sql-0.1.0-SNAPSHOT.sql脚本中,对应导入失败的建表语句后指定InnoDB引擎和utf-8字符集
create table test(...) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
执行日志出现上面报错的情况:
修改azkaban-exec的commonprivate.properties文件:
vi ./azkaban-exec/plugins/jobtypes/commonprivate.properties
增加一条配置:azkaban.native.lib=false