Azkaban安装部署教程
源码编译
- 编译完成的azkaban-3.80.0安装包下载地址(有用的话记得点赞),想用其他版本的话需要自己编译,参考如下:https://blog.csdn.net/weixin_38822045/article/details/91857425
- 编译前:友情提示-windows环境下编译的话最好设置下换行符
- 换行符-设置(git、IDEA、NotePadd++)
背景
1. 系统说明-换行符:windows上换行符是CRLF;linux或者Mac OS上是LF
2. 统一为LF的原因:
1)由于我们最后的代码都是要部署到linux的,所以就统一设置成LF
2)不设置为LF的话,会导致windows下的某些shell脚本,放到linux上执行不了
设置
1. git设置
1)git config --global core.eol lf #统一换行符为 lf
2)git config --global core.autocrlf false #将自动转换关闭,避免转换失败不能不同进行提交
3) git config --global core.safecrlf true #禁止混用 lf 和 crlf 两种换行符,混用后则不能提交代码
4)git config --global --list # 查看设置生效没
2. IDEA设置
1)File -> Settings -> Editor -> Code Style -> Line separator -> Unix and macOS
3. NotePadd++设置
1)Settings-Preferences-New Documnet
- 选择Unix(LF)
- 下载源码
git clone https://github.com/azkaban/azkaban.git
#ps 如果github下载慢的话可以去码云上面下载
码云地址:https://gitee.com/mirrors/azkaban?_from=gitee_search
git clone https://gitee.com/mirrors/azkaban.git
#ps,下载后找随便检验下两个脚本或者配置文件,使用记事本打开,看文件分隔符是否是LF,如下图就行
- 切换分支
git tag #查看所有tag
git checkout 3.80.0 #切换版本,我这儿选择的3.80.0版本进行编译的
- 修改修改build.gradle文件(添加aliyun maven仓库)
buildscript {
repositories {
maven { url 'https://maven.aliyun.com/repository/public/' }#这段是我加的阿里云maven仓库
mavenCentral()
/*#maven { url 'https://plugins.gradle.org/m2/'} #注释掉本来的maven仓库*/
}
dependencies {
classpath 'com.cinnober.gradle:semver-git:2.2.3'
classpath 'net.ltgt.gradle:gradle-errorprone-plugin:0.0.14'
}
}
allprojects {
apply plugin: 'jacoco'
repositories {
maven { url 'https://maven.aliyun.com/repository/public/' }
mavenCentral()
mavenLocal()
}
}
- 编译
./gradlew build installDist -x test
#该项目根目录下自带的gradlew,是gradle4.6版本的,可直接用,不需要额外装gradle环境
#-x test 跳过单元测试
- 编译报错1:如下图,原因是因为包没下载下来,解决办法就是去本地仓库D:/mvnRepos/org/xerial/snappy/snappy-java/1.1.2.4删除了,之后重新执行./gradlew build installDist -x test编译命令,直到成功显示
- 编译完成后将下面的4个模块里面的build/distributions/下将tar包拷贝到服务器上的/opt/env/azkaban-3.80.0目录下(没有此目录的话使用mkdir -p /opt/env/azkaban-3.80.0创建就行)
安装
环境准备
- 添加azkaban用户组和用户
groupadd azkaban
useradd -r -g azkaban azkaban
- mysql创建azkaban数据库、并授权
mysql> create database azkaban;
mysql> create user 'azkaban'@'%' identified by 'azkaban';
mysql> grant all on azkaban.* to 'azkaban'@'your ip' identified by 'azkaban';
mysql> flush privileges;
安装azkaban-web
- 导入相关azkaban数据
mysql> source /opt/env/azkaban-3.80.0/azkaban-db-3.80.0/create-all-sql-3.80.0.sql
- 配置keystore
cd azkaban-web-server-3.80.0
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
#ps:以下密码都设为azkaban
输入密钥库口令:
密钥库口令太短 - 至少必须为 6 个字符
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]:
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的省/市/自治区名称是什么?
[Unknown]:
该单位的双字母国家/地区代码是什么?
[Unknown]:
CN=cao, OU=parllay, O=fenghuotai, L=beijing, ST=beijing, C=CN是否正确?[否]: Y
输入 <jetty> 的密钥口令
(如果和密钥库口令相同, 按回车):
完成后会在当前目录下生成一个keystore文件
- 配置 conf/azkaban.properties
vim conf/azkaban.properties
#内容如下
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=/opt/env/azkaban/azkaban-web-3.80.0/conf/azkaban-users.xml
# Loader for projects路径一定要写绝对路径
executor.global.properties=/opt/env/azkaban/azkaban-web-3.80.0/conf/global.properties
azkaban.project.dir=projects
# database type
database.type=mysql
mysql.port=3306
mysql.host=your mysql server ip
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.maxThreads=25
jetty.ssl.port=8443
jetty.port=8081
jetty.keystore=keystore
jetty.password=azkaban
jetty.keypassword=azkaban
jetty.truststore=truststore
jetty.trustpassword=azkaban
# Azkaban Executor settings
executor.port=12321
# 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
# Number of executions to be displayed
azkaban.display.execution_page_size=16
azkaban.use.multiple.executors=true
# Azkaban Ramp Feature Configuration
#Ramp Feature Related
azkaban.ramp.enabled=true
azkaban.ramp.status.polling.enabled=true
azkaban.ramp.status.polling.interval.min=30
azkaban.ramp.status.push.interval.threshold=15
azkaban.ramp.status.pull.interval.threshold=100
- 用户设置
vim conf/azkaban-users.xml
<azkaban-users>
<user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
<user username="metrics" password="metrics" roles="metrics"/>
<user username= "admin" password="admin" roles="admin,metrics" /> #加这一行,可以用admin登陆
<role name="admin" permissions="ADMIN" />
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
- 添加mysql驱动包
cp mysql-connector-java-5.1.41-bin.jar /opt/env/azkaban-3.80.0/azkaban-web-server-3.80.0/lib/
- 启动web界面
./bin/start-web.sh
ps:如果访问不了,可能是防火墙没关
# systemctl stop firewalld.service
安装Azkaban Executor Server
- 解压
tar -zxvf azkaban-exec-server-3.80.0.tar.gz
- 修改配置文件
cd azkaban-exec-server-3.80.0
vim conf/azkaban.properties
#Azkaban
default.timezone.id=Asia/Shanghai
# Azkaban JobTypes Plugins
azkaban.jobtype.plugin.dir=plugins/jobtypes
#Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
database.type=mysql
mysql.port=3306
mysql.host=yourip
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30
- 添加mysql驱动包
cp mysql-connector-java-5.1.41-bin.jar /opt/env/azkaban-3.80.0/azkaban-exec-server-3.80.0/lib/
- 启动,一定要在bin目录下面启动
bin/azkaban-executor-start.sh
Demo测试
- 测试
cat > /opt/azkaban-exec-server-3.80.0/projects/foo.job
type=command
command=echo "Hello World"
cat > /opt/azkaban-exec-server-3.80.0/projects/bar.job
type=command
dependencies=foo
command=echo bar
7z a foobar.zip *.job
foobar zip在azkaban的前端上传执行结果如下:
- 效果图