0. 模式介绍
(1)solo server mode,依赖自带的H2数据库,web server和executor server在同一个线程。测试或者小规模的案例可以用。
(2)two sercer mode,需要mysql作为元数据库,web server和executor server在不同一个线程
(3)multiple executor mode,2模式的扩展,可以有多个executor server
下面安装使用第 2 种模式
1.下载 压缩包
wget https://github.com/azkaban/azkaban/archive/3.81.0.tar.gz
wget https://services.gradle.org/distributions/gradle-4.6-all.zip
2.解压 azkaban-3.81.0.tar.gz 到 /opt/azkaban/
mkdir /opt/azkaban/
tar -zxvf azkaban-3.81.0.tar.gz -C /opt/azkaban/
3.拷贝 gradle 到 azkaban 下的 gradle/wrapper 目录
mv gradle-4.6-all.zip /opt/azkaban/azkaban-3.81.0/gradle/wrapper/
cd /opt/azkaban/azkaban-3.81.0/gradle/wrapper/
编辑 gradle-wrapper.properties , 修改 distributionUrl=gradle-4.6-all.zip
sed -i 's/https\\:\/\/services.gradle.org\/distributions\///g' gradle-wrapper.properties
4.编译环境准备
jdk8 及以上
git
5.执行编译安装命令
cd /opt/azkaban/azkaban-3.81.0
-x test表示跳过测试,跳过测试可大大降低编译所需要的时间
注:安装过程中可能会有错误导致中断,一般都是网络问题(maven仓库下载jar包导致网络超时),解决方案有两种:
(1) 重复执行安装命令即可,下方有 rerun.sh 脚本(此种方式不推荐使用,会等待较长时间,如果一个jar包下载失败,会从零下载该jar包)
将 rerun.sh 此脚本放入目录:/opt/azkaban/azkaban-3.81.0/ 下执行 :
#!/bin/bash
./gradlew installDist -x test
ff=$?
cc=0
while [[ $ff == 1 ]]
do
let cc+=1
echo "run times : "$cc
echo "after 5s , run command again..."
sleep 5s
./gradlew installDist -x test
ff=$?
done
(2) 也可以通过修改maven仓库地址解决上面问题:修改 build.gradle ,将几处 mavenCentral() 、 mavenLocal() 注释掉,改用阿里云镜像 http://maven.aliyun.com/nexus/content/groups/public/ :
repositories {
//mavenCentral()
maven {
//url 'https://plugins.gradle.org/m2/'
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
}
......
repositories {
//mavenCentral()
//mavenLocal()
maven {
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
}
然后执行安装命令 :
./gradlew installDist -x test
6.安装成功后,检查 azkaban-web-server/build/install/azkaban-web-server 和 azkaban-exec-server/build/install/azkaban-exec-server 下的目录
bin 启动脚本目录
conf 配置文件目录(没有的话从solo-server的目录中拷贝过来)
lib 依赖jar包目录
extlib 附加jar包目录(没有的话手动创建)
plugins 插件安装目录 (没有的话从solo-server目录中拷贝过来)
web 资源文件
logs 日志文件(手动创建)
mkdir /opt/azkaban/azkaban-3.81.0/azkaban-web-server/build/install/azkaban-web-server/extlib
mkdir /opt/azkaban/azkaban-3.81.0/azkaban-web-server/build/install/azkaban-web-server/logs
mkdir /opt/azkaban/azkaban-3.81.0/azkaban-exec-server/build/install/azkaban-exec-server/extlib
mkdir /opt/azkaban/azkaban-3.81.0/azkaban-exec-server/build/install/azkaban-exec-server/logs
mkdir /opt/azkaban/azkaban-3.81.0/azkaban-exec-server/build/install/azkaban-exec-server/web
cp -r /opt/azkaban/azkaban-3.81.0/azkaban-solo-server/build/install/azkaban-solo-server/plugins /opt/azkaban/azkaban-3.81.0/azkaban-web-server/build/install/azkaban-web-server/
7.创建Azkaban元数据库 sql脚本在azkaban-db文件中,可以先创建一个azkaban数据库和用户
mysql> use azkaban;
# **source [sql脚本目录]。有一个名字里带all的脚本:**
mysql> source /opt/azkaban/azkaban-3.81.0/azkaban-db/build/sql/create-all-sql-0.1.0-SNAPSHOT.sql
8.编辑 azkaban-web-server 中的 azkaban.properties、 azkaban-exec-server 中的 azkaban.properties
(1) azkaban-web-server
vim azkaban-web-server/build/install/azkaban-web-server/conf/azkaban.properties
修改下面的参数 (修改为绝对路径)
web.resource.dir=/opt/azkaban/azkaban-3.81.0/azkaban-web-server/build/install/azkaban-web-server/web/
user.manager.xml.file=/opt/azkaban/azkaban-3.81.0/azkaban-web-server/build/install/azkaban-web-server/conf/azkaban-users.xml
executor.global.properties=/opt/azkaban/azkaban-3.81.0/azkaban-web-server/build/install/azkaban-web-server/conf/global.properties
(2) azkaban-exec-server
vim azkaban-exec-server/build/install/azkaban-exec-server/conf/azkaban.properties
修改下面的参数 (修改为绝对路径)
executor.global.properties=/opt/azkaban/azkaban-3.81.0/azkaban-exec-server/build/install/azkaban-exec-server/conf/global.properties
azkaban.jobtype.plugin.dir=/opt/azkaban/azkaban-3.81.0/azkaban-exec-server/build/install/azkaban-exec-server/plugins/jobtypes
(3) azkaban-web-server 、azkaban-exec-server
修改下面的参数 (修改为你自己数据库的配置)
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
9.配置 keystore
> keytool -keystore keystore -alias jetty -genkey -keyalg RSA
> keystore password: 123456
> what is your first and last name: xx
> what is the name of your organizational unit: xx
> what is the name of your organization: xx
> what is the name of your City or Locality: xx
> what is the name of your State or Province: xx
> what is the two_letter country code for this unit: CN
将生成的keystone文件拷贝到web-server的安装目录下,和conf等目录同级
mv keystore azkaban-web-server/build/install/azkaban-web-server/
10.先启动 exec-server 、然后启动 web-server , jps 检查进程
注:如果启动 web 程序失败,日志显示没有找到 executors:两种解决办法:
(1)检查 数据库表 executors 中 active列 是否为 1,手动修改为 1(host列 也可以修改为局域网内的 ip 地址),可以根据 exec-server 启动的端口定位一条记录(在日志文件bin/logs/azkaban-execserver.log中可以查看启动端口)
mysql> SELECT * FROM executors;
(2)也可以执行以下命令激活 executor :
curl http://${executorHost}:${executorPort}/executor?action=activate
最后分别启动 exec 和 web 服务
cd /opt/azkaban/azkaban-3.81.0/azkaban-exec-server/build/install/azkaban-exec-server/bin
./start-exec.sh
cd /opt/azkaban/azkaban-3.81.0/azkaban-web-server/build/install/azkaban-web-server/bin
./start-web.sh
11.访问 http://ip:8081
访问端口 在 azkaban-web-server/conf/azkaban.properties 配置文件中:
jetty.port=8081