azkaban部署文档
1.下载
git clone https://github.com/azkaban/azkaban.git
2.编译
Build Azkaban
./gradlew build
Clean the build
./gradlew clean
Build and install distributions
./gradlew installDist
note:编译环境需要java8及以上以及gcc和gc++
3.拷贝
另新建目录 azkaban3.2 执行
cp azkaban/azkaban-solo-server/build/distributions/azkaban-solo-server-3.20.0-5-g28fc94e7.tar.gz azkaban-3.2
cp azkaban/azkaban-exec-server/build/distributions/azkaban-exec-server-3.20.0-5-g28fc94e7.tar.gz azkaban-3.2
cp azkaban/azkaban-web-server/build/distributions/azkaban-web-server-3.20.0-5-g28fc94e7.tar.gz azkaban-3.2
cp azkaban/azkaban-sql/build/distributions/azkaban-sql-3.20.0-5-g28fc94e7.tar.gz azkaban-3.2
cd azkaban-3.2
tar -zvxf azkaban-exec-server-3.20.0-5-g28fc94e7.tar.gz
tar -zvxf azkaban-web-server-3.20.0-5-g28fc94e7.tar.gz
tar -zvxf azkaban-sql-3.20.0-5-g28fc94e7.tar.gz
tar -zxvf azkaban-exec-server-3.20.0-5-g28fc94e7.tar.gz
4.创建azkaban元数据库
1)以root用户登录mysql
2) CREATE DATABASE azkaban;
3 CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
4) GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
5) flush privileges;
6) use azkaban;
7) source /home/spark_test/azkaban3.2/azkaban-sql-3.20.0-5-g28fc94e7/create-all-sql-3.2.0.sql
5.创建SSL配置,生成keystore文件
在azkaban-web-server-3.20.0-5-g28fc94e7目录下执行命令:
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
根据提示执行:
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
Enter keystore password: 123456 #用户自定义
Re-enter new password: 123456
What is your first and last name?
[Unknown]: #可为空
What is the name of your organizational unit?
[Unknown]:
What is the name of your organization?
[Unknown]:
What is the name of your City or Locality?
[Unknown]:
What is the name of your State or Province?
[Unknown]:
What is the two-letter country code for this unit?
[Unknown]: CN
Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN correct?
[no]: y
Enter key password for <jetty>
(RETURN if same as keystore password):123456
执行完命令后会在azkaban-web-server-3.20.0-5-g28fc94e7目录下生成keystore文件
6.配置azkaban-web-server
执行mv azkaban-web-server-3.20.0-5-g28fc94e7 web
将azkaban-solo-server-3.20.0-5-g28fc94e7下的plugin目录和conf目录拷贝到web目录下
修改conf下的azkaban.properties
#服务器UI名称,用于服务器上方显示的名字
azkaban.name=Test
#描述
azkaban.label=My Local Azkaban
#UI颜色
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
#默认根web目录
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
# global配置文件所在位置
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
#数据库类型,目前只支持mysql
database.type=mysql
#端口号
mysql.port=3306
#数据库连接IP
mysql.host=localhost
#数据库实例名
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端口
jetty.ssl.port=8443
#Jetty端口
jetty.port=8088
#SSL文件名
jetty.keystore=keystore
#SSL文件密码
jetty.password=123456
#Jetty主密码 与 keystore文件相同
jetty.keypassword=123456
#SSL文件名
jetty.truststore=keystore
# SSL文件密码
jetty.trustpassword=123456
jetty.excludeCipherSuites=SSL_RSA_WITH_DES_CBC_SHA,SSL_DHE_RSA_WITH_DES_CBC_SHA,SSL_DHE_DSS_WITH_DES_CBC_SHA,SSL_RSA_EXPORT_WITH_RC4_40_MD5,SSL_RSA_EXPORT_WITH_DES40_CBC_SHA,SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA
# Azkaban Executor settings
#执行服务器端口
executor.port=12321
# mail settings 邮件设置
#发送邮箱
mail.sender=
#发送邮箱smtp地址
mail.host=
#发送邮件时显示的名称
mail.user=
#发送邮件时的密码
mail.password=
#任务失败时发送邮件的地址
job.failure.email=
#任务成功时发送邮件的地址
job.success.email=
lockdown.create.projects=false
#缓存目录
cache.directory=cache
# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
7.配置用户
azkaban使用jetty创建服务端,通过配置$AZKABAN_WEB_HOME/conf/azkaban-users.xml文件来配置用户,在官网的说明如下http://azkaban.github.io/azkaban/docs/latest/#user-manager 。采用用户——角色——权限三个维度控制权限。其中用户可以创建用户组,给用户组制定权限,这样在该用户组下的所有用户自动拥有该权限。
azkaban提供的权限有如下几种,用户可以自行组合配置
ADMIN | Grants all access to everything in Azkaban |
---|---|
READ | Gives users read only access to every project and their logs |
WRITE | Allows users to upload files, change job properties or remove any project |
EXECUTE | Allows users to trigger the execution of any flow |
SCHEDULE | Users can add or remove schedules for any flows |
CREATEPROJECTS | Allows users to create new projects if project creation is locked down |
注意这里的CREATEPROJECTS权限,说明是”如果project creation 是 locked down,就允许用户创建新的project”。
这个locked down配置是在$AZKABAN_WEB_HOME/conf/azkaban.properties文件中
lockdown.create.projects=true
在web-server的conf目录下修改azkaban-users.xml
<azkaban-users>
<user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
<user password="metrics" roles="metrics" username="metrics"/>
<user username="admin" password="admin" roles="admin,metrics" />
<role name="admin" permissions="ADMIN"/>
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
8.配置azkaban-executors
mv azkaban-exec-server-3.20.0-5-g28fc94e7 executor
将azkaban-exec-server-3.20.0-5-g28fc94e7下的plugin目录和conf目录拷贝到executor目录下
修改conf目录下的azkaban.properties
default.timezone.id=Asia/Shanghai
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
# Azkaban plugin settings
azkaban.jobtype.plugin.dir=plugins/jobtypes
database.type=mysql
mysql.port=3306
mysql.host=local
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
9.添加log4j.properties
分别在web-server的conf目录和execotor的conf目录下加入文件log4j.properties
log4j.rootLogger=INFO,C
log4j.appender.C=org.apache.log4j.ConsoleAppender
log4j.appender.C.Target=System.err
log4j.appender.C.layout=org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
10.分布式配置
如果需要部署分布式azkaban,只需要在其他节点布置execotor即可,配置和上面executor配置大致相同。
11.启动
启动时需要先启动execotor再启动webserver,如果新加入了execotor,则需要重新启动execotor
进入execotor 目录执行
./bin/start-exec.sh
(必须是此路径下启动)
进入web-server 目录执行
./bin/start-web.sh
(必须是此路径下启动)
用户名:azkaban
密 码:azkaban