版本说明: Azkaban:3.7.2
一、源码包的下载
GitHub下载:https://github.com/azkaban/azkaban/archive/3.72.1.tar.gz
二、源码包的编译
1. Gradle的下载
azkaban源码包的编译需要用到Gradle,且该azkaban的编译需要使用**gradle-4.6-all.zip**
该版本,使用高版本会有异常问题
官网下载地址:https://gradle.org/releases/
找到版本(4.6),下载 binary-only
即可:
2. Gradle的安装
上传到linux服务器上(最好是一台能够连接互联网的linux服务器),然后进行解压:
解压完成后,进入到解压后的目录中:cd ./gradle-4.6/
输入命令查看是否正确安装以及安装版本信息:bin/gradle -version
如果出现上述界面,则说明安装成功
3. Azkaban包上传
将下载的azkaban源码包进行上传至服务器指定的目录下(自己随便定义),然后解压:
解压后会产生一个azkaban的文件目录
4.Azkaban的编译
进入到解压后的目录中,可以看到如下的目录结构:
这里我们主要关注三个文件夹即可,分别是:
- azkaban-db
- azkaban-exec-server
- azkaban-web-server
首先进入到azkaban-db
该目录下,执行命令/opt/gradle-4.6/bin/gradle build installDist
开始进行编译,如果最后看到如下页面则说明编译完成:
同样,在返回进入到azkaban-exec-server
目录下,同样执行上述命令开始编译:
最终如果输入如下界面,说明,成功编译完成:
同样,再返回进入到azkaban-web-server
目录下,同样执行上述命令开始编译:
这期间如果编译遇到错误,很可能就是网络不稳定的原因,多执行几遍就好了
三、Azkaban的安装
分别进入到目录下,查看是否会有生成的目录:
- azkaban-db/build/install/azkaban-db
- azkaban-exec-server/build/install/azkaban-exec-server
- azkaban-web-server/build/install/azkaban-web-server
将这三个文件夹拷贝出来,后面主要用到的就是三个文件夹,统一放到一个文件夹中,分别是:
- azkaban-web-server/build/install/azkaban-web-server
- azkaban-exec-server/build/install/azkaban-exec-server
- azkaban-db/build/install/azkaban-db
1. 创建Mysql数据库
需要选定一个数据库,该数据库可以是外部的,可以是本地安装一个,然后创建azkaban数据库,用于存放azkaban元数据信息,并导入脚本初始化元数据信息:
MySQL [(none)]> create database azkaban;
MySQL [(none)]> use azkaban;
MySQL [(azkaban)]> source /opt/azkaban/azkaban-db/create-all-sql-0.1.0-SNAPSHOT.sql;
2. Azkaban-exec-server端的配置
进入到azkaban-exec-server目录下,编译conf/azkaban.properties
文件
# Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=web/
default.timezone.id=Asia/Shanghai
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.use.ssl=false
jetty.maxThreads=25
jetty.port=8081
# Where the Azkaban web server is located
azkaban.webserver.url=http://localhost:8081
# 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=plugins/jobtypes
# Azkaban mysql settings by default. Users should configure their own username and password.
database.type=mysql
mysql.port=3306
mysql.host=10.0.107.132
mysql.database=azkaban
mysql.user=root
mysql.password=123456
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.flow.threads=30
executor.port=12321
3. Azkaban web端的信息采集
进入到azkaban-web-server目录下,执行命令keytool -keystore keystore -alias jetty -genkey -keyalg RSA
其余的都为空,直接回车
完成之后会看到当前目录下会生成一个ketstore文件
4. 交互式命令生成时区
输入命令tzselect
最后会在该目录下生成时区文件:/usr/share//zoneinfo/Asia/Shanghai
拷贝改文件到 etc/localtime/
下面,覆盖系统本地时区文件
5. Azkaban-web-server端的配置
# Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
# 默认根web目录
web.resource.dir=web/
# 默认时区 Asia/Shanghai
default.timezone.id=Asia/Shanghai
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.use.ssl=true
jetty.maxThreads=25
#jetty.port=8081
jetty.ssl.port=8443
jetty.keystore=/opt/azkaban/azkaban-web-server/keystore
jetty.truststore=/opt/azkaban/azkaban-web-server/keystore
jetty.password=azkaban
jetty.keypassword=azkaban
jetty.trustpassword=azkaban
# 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 mysql settings by default. Users should configure their own username and password.
database.type=mysql
mysql.port=3306
mysql.host=10.0.107.132
mysql.database=azkaban
mysql.user=root
mysql.password=123456
mysql.numconnections=100
#Multiple Executor
azkaban.use.multiple.executors=true
#azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus
azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
azkaban.executorselector.comparator.Memory=1
azkaban.executorselector.comparator.LastDispatched=1
azkaban.executorselector.comparator.CpuUsage=1
6. web登录用户配置
编辑文件azkaban-web-server/conf/azkaban-users.xml
<azkaban-users>
<user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
<user password="metrics" roles="metrics" username="metrics"/>
<!-- 设置登录web地址的账号密码 -->
<user username="admin" password="admin" roles="admin,metrics" />
<user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
<role name="admin" permissions="ADMIN"/>
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
四、服务启动验证
1. 启动azkaban-exec-server
进入到azkaban-exec-server
目录下,并执行命令bin/start-exec.sh
注意:这里启动必须通过在父目录下进行执行该命令启动,不能进入到bin目录下执行启动脚本
[root@host-10-0-68-82 azkaban]# cd azkaban-exec-server/
[root@host-10-0-68-82 azkaban-exec-server]# bin/start-exec.sh
查看启动日志,如果出现如下截图说明启动成功:
验证:输入命令 curl -G "localhost:$(<./executor.port)/executor?action=activate"&&echo
如果返回如下信息说明,启动成功:
[root@host-10-0-68-82 azkaban-exec-server]# curl -G "localhost:$(<./executor.port)/executor?action=activate" && echo
{"status":"success"}
2. 启动azkaban-web-server
进入到azkabanw-web-server
目录下,并执行命令bin/azkaban-web-start.sh
查看日志,出现如上页面,则说明启动成功
3. 登录验证
浏览器输入地址:https://node1:8443/index
输入账号密码登录:
账号:admin
密码:admin
说明安装成功