最近的azakaban源码包长的和网上的教程很不一样,很郁闷。。。要自己踩坑了
系统:centos
mysql:8.0.15
azkaban:3.70.0
1 下载并解压
https://github.com/azkaban/azkaban/releases根据需要挑一个版本下载并解压。
或者用命令直接把代码拉下来:git clone https://github.com/azkaban/azkaban.git
2 编译。
【编译大概需要10min,且需要提前安装git如果没有的话,git安装命令:
Ubuntu:sudo apt-get install git
centos:sudo yum install git】
进入azkaban目录下,执行
> ./gradlew build #Build Azkaban
这一步报错说test失败,
org.jasypt.exceptions.EncryptionOperationNotPossibleException: Encryption raised an exception. A possible cause is you are using strong encryption algorithms and you have not installed the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files in this Java Virtual Machine
需要安装jce的强算法插件,
https://www.oracle.com/technetwork/cn/java/javase/downloads/jce8-download-2133166-zhs.html下载jce,
此链接适用jre8,解压下载好的文件,
放置到本机java安装目录下的:/*/jdk1.8.0_*/jre/lib/security/
> ./gradlew clean #Clean the build
> ./gradlew installDist
3 创建azkaban元数据库。
登录mysql;
mysql> CREATE DATABASE azkaban;
mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
mysql> flush privileges;
mysql> exit;
#默认的配置数据包大小有点太小,建议修改。
#在/etc/my.cnf文件添加
[mysqld]
...
max_allowed_packet=1024M
#重启mysql
> /sbin/service mysqld restart
#再次登录mysql
mysql> source /home/zouyajie/azkaban-master/azkaban-db/build/sql/create-all-sql-0.1.0-
SNAPSHOT.sql
[#该文件的目录及版本名称不固定]
如果mysql和*.sql文件没有在同一台机器上,那么需要先把该sql文件发送到安装mysql的机器上。在sql文件路径下进入mysql,执行上述source命令。
4 拷贝。
cp -r azkaban-web-server/* /home/azkaban/webserver
cp -r azkaban-exec-server/* /home/azkaban/executor/
5 配置azkaban-web-server
此目录如下 bin conf extlib lib plugins web 目录(如该目录下没有相应的文件夹,则直接在 azkaban-solo-server 目录下拷贝就行)。
把mysql-jdbc*.jar包放到webserver和executor的extlib下,此包可以在lib目录下找到。
6 生成ssl的keystore
##使用如下命令创建一个SSL密钥
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
生成的 keystore SSL密钥文件放在azkaban-web-server-3.32.2/bin目录下即可。一旦keystore SSL密钥文件创建,需要在azkaban.properties中配置ssl相关的配置。
下面一份azkaban-web-server的azkaban.propertiesp完整配置示例
可以参考solo模式的配置文件
azkaban-solo-server/build/distributions/azkaban-solo-server-3.32.2/conf/azkaban.properties作为模板
根据本机情况修改
# Azkaban Personalization Settings
azkaban.name=mtime #服务器UI名称,用于服务器上方显示的名字
azkaban.label=mtime #描述
azkaban.color=#FF3601 #UI颜色
azkaban.default.servlet.path=/index
web.resource.dir=web/ #默认根web目录
default.timezone.id=Asia/Shanghai #默认时区,已改为亚洲/上海 默认为美国
# UserManager config
user.manager.class=azkaban.user.XmlUserManager #用户权限管理默认类
user.manager.xml.file=conf/azkaban-users.xml #用户配置,具体配置参加下文
# Loader for projects
executor.global.properties=conf/global.properties # global配置文件所在位置
azkaban.project.dir=projects
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
#jetty.use.ssl=false
jetty.use.ssl=true
jetty.ssl.port=8993 #Jetty SSL端口
jetty.maxThreads=25 #最大线程数
jetty.port=8081 #Jetty端口
# Azkaban Executor settings
executor.host=localhost
executor.port=12321
# mail settings 可以不设置
[email protected]
mail.host=mail.mtime.com
[email protected]
mail.password=111112232
mail.tls=true
[email protected]
[email protected]
lockdown.create.projects=false
cache.directory=cache #缓存目录
# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
# Azkaban plugin settings
azkaban.jobtype.plugin.dir=plugins/jobtypes
# KeyStore for SSL
jetty.keystore=keystore #SSL文件名
jetty.password=azkaban #SSL文件密码
jetty.keypassword=azkaban # Jetty主密码 与 keystore文件相同
jetty.truststore=keystore #SSL文件名
jetty.trustpassword=azkaban # SSL文件密码
# Setting up the DB
database.type=mysql #数据库类型
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=azkaban
mysql.password= azkaban
mysql.numconnections=100
#Multiple Executor Mode
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
修改executor的配置
default.timezone.id=Asia/Shanghai #时区
# Azkaban JobTypes 插件配置
azkaban.jobtype.plugin.dir=plugins/jobtypes #jobtype 插件所在位置
#Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
#数据库设置
database.type=mysql #数据库类型(目前只支持mysql)
mysql.port=3306
#数据库端口号
mysql.host=192.168.20.200 #数据库IP地址
mysql.database=azkaban #数据库实例名
mysql.user=root #数据库用户名
mysql.password=root #数据库密码
mysql.numconnections=100 #最大连接数
# 执行服务器配置
executor.maxThreads=50 #最大线程数
executor.port=12321 #端口号(如修改,请与web服务中一致)
executor.flow.threads=30 #线程数
先启动executor,再启动webserver;可能因为配置原因,启动不会打印log,要手动查看是否启动正确。
启动出现过的问题:
是因为我用的mysql是8.*版本的,然而azkaban自带的mysql的jdbc包是mysql-connector-java-5*.jar,不支持,需要删掉原来的jdbc重新下载,用mysql-connector-java-8*.jar。jdbc在webserver和exe-server的lib目录下
首次启动时,可能会出现“can't find active executor”,则运行以下命令:
[或者关掉重启;或者往mysql表里插入一条记录insert into executors (host,port,active) values ('exec-ip',12321,0);]
curl http://${executorHost}:${executorPort}/executor?action=activate
若正常启动后webserver日志文件提示:
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
原因:浏览器安全证书限制,把http改为https并在浏览器信任该网站。