官方没有提供安装包,因此需要下载源码,自行编译
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。
http://192.168.1.213:8081
配置了ssl默认地址
https://192.168.1.213:8443
默认用户名密码:azkaban/azkaban
注意:这个脚本里面所有的配置文件都写了相对路径,启动Azkaban的时候,就在Azkaban的根目录中使用bin/start-web.sh启动,不然Azkaban会找不到配置文件
查看启动的端口
ps aux|grep Azkaban netstat -antup |grep 125502



