官方没有提供安装包,因此需要下载源码,自行编译
1.先安装git,编译的时候会用到
#yum –y update
yum –y install git
2.在github上面下载azkaban4.0版本
https://codeload.github.com/azkaban/azkaban/tar.gz/refs/tags/4.0.0
下载完成后将文件复制到/opt目录下,使用命令解压
tar -zxvf azkaban-4.0.0.tar.gz -C /opt/
3.配置gradle
cd /opt/azkaban-4.0.0/gradle/wrapper
wget https://services.gradle.org/distributions/gradle-4.6-all.zip
vi gradle-wrapper.properties
然后在gradle-wrapper.properties最后一行改成
distributionUrl=gradle-4.6-all.zip
进入azkban目录,修改gradle的build.gradle的仓库地址为阿里云仓库(respositories节点)以及jar包版本(versions.restli属性)
cd /opt/azkaban-4.0.0
vi build.gradle
buildscript {
repositories {
mavenCentral()
maven {
url 'https://maven.aliyun.com/repository/central'
}
maven {
url 'https://maven.aliyun.com/repository/gradle-plugin'
}
maven {
url 'https://maven.aliyun.com/repository/public'
}
maven {
url 'https://maven.aliyun.com/repository/google'
}
}
dependencies {
classpath 'com.cinnober.gradle:semver-git:2.2.3'
classpath 'net.ltgt.gradle:gradle-errorprone-plugin:0.0.14'
}
}
plugins {
id 'com.gradle.build-scan' version '1.9'
id 'com.github.kt3k.coveralls' version '2.6.3'
id 'jacoco'
id 'idea'
}
buildScan {
licenseAgreementUrl = 'https://gradle.com/terms-of-service'
licenseAgree = 'yes'
}
apply plugin: 'com.cinnober.gradle.semver-git'
apply plugin: 'compare-gradle-builds'
compareGradleBuilds {
targetBuild.gradleVersion = "4.0"
}
allprojects {
apply plugin: 'jacoco'
repositories {
mavenCentral()
mavenLocal()
// need this for rest.li/pegasus 28.* artifacts until they are in Maven Central:
maven {
url 'https://linkedin.bintray.com/maven'
}
}
}
ext.versions = [hadoop: '2.10.0',
hive : '1.1.0',
pig : '0.11.0',
restli: '27.7.18',
slf4j : '1.7.18',]
Azkaban4.0.0版本有有三个依赖的版本在中央仓库中下载不到,手动修改这三个jar的版本号,版本为:27.7.18 (对应versions.restli)
'com.linkedin.pegasus:generator',
'com.linkedin.pegasus:restli-server',
'com.linkedin.pegasus:restli-tools',
4.开始编译
cd /opt/azkaban-4.0.0
./gradlew build installDist -x test
正常到这一步就编译成功了
5.部署
在这里我们使用multiple executor模式,集群部署选用3台机器,WebServer部署一台机器,Azkaban ExecServer部署两台机器(暂时部署一台测试)。使用的包如下:
安装包 | 机器 |
azkaban-db-0.1.0-SNAPSHOT.tar.gz | 192.168.1.214 |
azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz | 192.168.1.213,192.168.1.214 |
azkaban-web-server-0.1.0-SNAPSHOT.tar.gz | 192.168.1.213 |
5.1配置数据库信息
#复制包到/opt/bigdata目录
cp /opt/azkaban-4.0.0/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz /opt/bigdata/
#解压 azkaban-db-0.1.0-SNAPSHOT.tar.gz压缩包
tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz
cd azkaban-db-0.1.0-SNAPSHOT
#登陆MySQL数据库
mysql -uroot -p
#创建azkaban的数据库
create database azkaban;
#创建azkaban的用户名,对azkaban用户进行授权操作azkaban数据库
create user 'azkaban'@'%' identified by 'azkaban';
GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
flush privileges;
use azkaban;
##执行azkaban-db-xxx目录中的建表语句
source /root/create-all-sql-0.1.0-SNAPSHOT.sql;
#遇到密码验证不通过的时候可以设置策略
set global validate_password_length=4;
set global validate_password_policy='LOW';
#查看策略
show variables like 'validate_password%';
5.2安装WebServer
先复制azkaban-web-server-0.1.0-SNAPSHOT.tar.gz到其他服务器节点
scp /opt/azkaban-4.0.0/azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz root@bigdata001:/opt/bigdata
然后解压文件
tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
cd azkaban-web-server-0.1.0-SNAPSHOT
生成安全认证秘钥:Azkaban对于安全管理做得非常好,可以通过SLA、Jetty等实现安全访问,使用以下命令生成
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
根据自己的情况填写,确认后得到一个安全认证的秘钥文件,后续访问Azkaban,需要用到这个文件(Jetty 密码默认azkaban 最好和密钥一致)
下一步修改azkaban配置文件
vim conf/azkaban.properties
#编辑配置文件
azkaban.name=azkaban
azkaban.label=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=true
jetty.maxThreads=25
jetty.port=8081
#指定keystore文件的位置
jetty.keystore=/opt/bigdata/azkaban-web-server-0.1.0-SNAPSHOT/keystore
#keystore中的密码
jetty.password=azkaban
jetty.keypassword=azkaban
#指定keystore文件的位置
jetty.truststore=/opt/bigdata/azkaban-web-server-0.1.0-SNAPSHOT/keystore
#keystore中的密码
jetty.trustpassword=azkaban
# Azkaban Executor settings
# mail settings
mail.sender=
mail.host=
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=192.168.50.1
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
#Multiple Executor
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
5.3安装ExecServer
使用scp复制azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz到其他节点
for i in 1 2 3;
do
scp /opt/azkaban-4.0.0/azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz root@bigdata001:/opt/bigdata
done
解压文件
tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
配置azkaban.properties
vim azkaban-exec-server-0.1.0-SNAPSHOT/conf/azkaban.properties
# Azkaban Personalization Settings
default.timezone.id=Asia/Shanghai
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
# Velocity dev mode
velocity.dev.mode=false
# Where the Azkaban web server is located
azkaban.webserver.url=http://bigdata001:8081
# mail settings
mail.sender=
mail.host=
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= bigdata002
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.flow.threads=30
executor.props.resolve.overrideExisting.enabled=false
5.4启动Azkaban
- 启动ExecServer(先进目录)
cd /opt/bigdata/azkaban-exec-server-0.1.0-SNAPSHOT/
sh bin/start-exec.sh
每一次启动必须手动激活这个exec,要么手动修改数据库,要么执行以下命令
curl -G "localhost:$(<./executor.port)/executor?action=activate" && echo
- 启动WebServer
cd /opt/bigdata/azkaban-web-server-0.1.0-SNAPSHOT/
sh bin/start-web.sh
然后就可以在浏览器访问WebUI。
配置了ssl默认地址
https://192.168.1.213:8443
默认用户名密码:azkaban/azkaban
注意:这个脚本里面所有的配置文件都写了相对路径,启动Azkaban的时候,就在Azkaban的根目录中使用bin/start-web.sh启动,不然Azkaban会找不到配置文件
查看启动的端口
ps aux|grep Azkaban
netstat -antup |grep 125502
azkaban4.0编译包