1、下载源码
https://github.com/azkaban/azkaban.git
下载完成进行解压
2、编译
cd 到 azkaban 目录下,执行如下命令生成一系列文件
./gradlew distTar
编译完成
3、创建工作目录,将编译后的jar包拷贝进来
mkdir azkaban
拷贝tar包
cp azkaban-3.38.0/azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz azkaban
cp azkaban-3.38.0/azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz azkaban
cp azkaban-3.38.0/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz azkaban
cp azkaban-3.38.0/azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz azkaban
解压tar包
tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz
tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz
重命名文件夹
mv azkaban-db-0.1.0-SNAPSHOT azkaban-db
mv azkaban-exec-server-0.1.0-SNAPSHOT azkaban-exec-server
mv azkaban-web-server-0.1.0-SNAPSHOT azkaban-web-server
mv azkaban-solo-server-0.1.0-SNAPSHOT/ azkaban-solo-server
删除tar包
最后结果
文件说明:
azkaban-db:初始化数据库存储相关。
azkaban-exec-server:调度执行相关。
azkaban-solo-server:单机安装配置相关。
azkaban-web-server:azkaban web页面。
4、初始化mysql数据库
mysql -uroot -pxxxx ##登录MySQL
create database azkaban;##创建azkaban数据库
use azkaban;
source /opt/soft/modul/azkaban/azkaban-db/create-all-sql-0.1.0-SNAPSHOT.sql ##导入相关表结构
5、创建SSL配置
执行命令:
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
按照提示进行输入
输入密钥库口令: 1234567
再次输入新口令: 1234567
您的名字与姓氏是什么?
[Unknown]: batman
您的组织单位名称是什么?
[Unknown]: batman
您的组织名称是什么?
[Unknown]: batman
您所在的城市或区域名称是什么?
[Unknown]: beijing
您所在的省/市/自治区名称是什么?
[Unknown]: beijing
该单位的双字母国家/地区代码是什么?
[Unknown]: CN
CN=sensing, OU=sensing, O=sensing, L=beijing, ST=beijing, C=CN是否正确?
[否]: y
输入 的密钥口令 1234567
(如果和密钥库口令相同, 按回车):
再次输入新口令: 1234567
6、设置配置文件
将azkaban-solo中的配置和插件拷贝到exec下
cp -a azkaban-solo-server/conf/ azkaban-solo-server/plugins/ azkaban-exec-server/
修改配置文件
# Azkaban Personalization Settings
azkaban.name=sxfkpt #名称
azkaban.label=Azkaban Server #标签描述
azkaban.color=#FF3601 #色号
azkaban.default.servlet.path=/index
web.resource.dir=/opt/soft/azkaban-3.38.0/azkaban-web-server/web #web资源路径
default.timezone.id=Asia/Shanghai #时区
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=/opt/soft/azkaban-3.38.0/azkaban-web-server/conf/azkaban-users.xml #用户权限配置文件
# Loader for projects
executor.global.properties=/opt/soft/azkaban-3.38.0/azkaban-web-server/conf/global.properties #全局配置文件
azkaban.project.dir=projects
database.type=mysql #MySQL相关配置
mysql.port=3306
mysql.host=192.168.1.140
mysql.database=azkaban
mysql.user=root
mysql.password=123456
mysql.numconnections=100
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.use.ssl=false
jetty.maxThreads=25
jetty.port=8081
# Azkaban Executor settings
executor.port=12321
# mail settings
mail.sender=
mail.host=
# User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.
# enduser -> myazkabanhost:443 -> proxy -> localhost:8081
# when this parameters set then these parameters are used to generate email links.
# if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
# azkaban.webserver.external_hostname=myazkabanhost.com
# azkaban.webserver.external_ssl_port=443
# azkaban.webserver.external_port=8081
job.failure.email=
job.success.email=
lockdown.create.projects=false
cache.directory=cache
# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
# Azkaban plugin settings
azkaban.jobtype.plugin.dir=/opt/soft/azkaban-3.38.0/azkaban-exec-server/plugins/jobtypes #plugins配置路径
为azkaban-web-server添加配置
创建一个azkaban-exec-server/conf/的软连接
ln -s /opt/soft/modul/azkaban/azkaban-exec-server/conf conf
8、启动服务
启动executor
sh azkaban-exec-server/bin/azkaban-executor-start.sh
启动成功
启动web-server
启动成功
页面登录:host:8081
初始用户名和密码都是:azkaban
测试使用
上传zip包
上传成功:
开始执行
执行成功:
9、关闭服务
sh azkaban-exec-server/bin/azkaban-executor-shutdown.sh
sh azkaban-web-server/bin/azkaban-web-shutdown.sh
11、FAQ:
1、log4j.properties文件不存在
解决:创建一个log4j.properties文件放在 conf文件夹下
2、 启动exec-server异常 , conf/global.properties不存在
解决: vim azkaban.properties 修改 executor.global.properties 为绝对路径
3、 启动exec-web异常 azkaban-users.xml文件不存在
解决:vim azkaban.properties 修改 user.manager.xml.file 为绝对路径
4、访问Azkaban UI界面
好不容易搭好了,页面无样式,心疼5秒钟,哈哈
解决: 修改azkaban.properties文件中的web.resource.dir 为/opt/soft/azkaban-3.38.0/azkaban-web-server/web #web资源路径
重启web-server,再次访问,可以看到UI界面就正常了
5、上传job文件时出现错误
azkaban.project.ProjectManagerException: Error Chunking during uploading files to db...
at azkaban.project.JdbcProjectImpl.uploadFileInChunks(JdbcProjectImpl.java:406)
at azkaban.project.JdbcProjectImpl.lambda$uploadProjectFile$2(JdbcProjectImpl.java:269)
原因: mysql根据配置文件会限制server接受的数据包大小。
解决:
进入mysql 查看一下当前设置大小,是不是小于了upload包的大小。
show VARIABLES like '%max_allowed_packet%';
可以通过环境变量设置让mysql立即生效,不用重启mysql
set global max_allowed_packet =2102410240(有可能不生效)
也可以通过编辑my.cnf来修改,在[mysqld]段或者mysql的server配置段进行修改。
max_allowed_packet = 500M
重启mysql 服务生效 。
6、执行任务出现错误
20-06-2019 20:05:37 CST ganerateEtlTime ERROR - Job run failed!
azkaban.utils.UndefinedPropertyException: Missing required property 'azkaban.native.lib'
at azkaban.utils.Props.getString(Props.java:421)
at azkaban.jobExecutor.ProcessJob.run(ProcessJob.java:234)
at azkaban.execapp.JobRunner.runJob(JobRunner.java:748)
at azkaban.execapp.JobRunner.doRun(JobRunner.java:591)
at azkaban.execapp.JobRunner.run(JobRunner.java:552)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
20-06-2019 20:05:37 CST ganerateEtlTime ERROR - Missing required property 'azkaban.native.lib' cause: null
20-06-2019 20:05:37 CST ganerateEtlTime INFO - Finishing job ganerateEtlTime at 1561032337570 with status FAILED
解决: 在azkaban-exec-server/plugins/jobtypes 目录下添加commonprivate.properties配置文件,内容中添加:azkaban.native.lib=false
若修改后不生效,别担心,还有方法,哈哈,查看azkaban.properties文件。
azkaban.jobtype.plugin.dir=/opt/soft/azkaban-3.38.0/azkaban-exec-server/plugins/jobtypes #plugins配置路径要填绝对路径