1、安装模式
Azkaban有三种运行模式:
1) solo servermode:最简单的模式,数据库内置的H2数据库,管理服务器和执行服务器都在一个进程中运行,任务量不大项目可以采用此模式。
2) two servermode:数据库为mysql,管理服务器和执行服务器在不同进程,这种模式下,管理服务器和执行服务器互不影响
3) multipleexecutor mode:该模式下,执行服务器和管理服务器在不同主机上,且执行服务器可以有多个。
项目需求,使用第二种。
2、Mysql安装及配置
安装教程:http://blog.csdn.net/duyuanhai/article/details/36404175
安装完之后启动:
1)为Azkaban创建一个数据库:
# Example database creation command, although the db name doesn't need to be 'azkaban'
mysql> CREATE DATABASE azkaban;
2) 为Azkaban创建一个数据库用户:
# Example database creation command. The user name doesn't need to be 'azkaban'
mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'password';
3) 为用户赋予Azkaban数据库的增删查改的权限:
# Replace db, username with the ones created by the previous steps.
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON <database>.* to '<username>'@'%' WITH GRANT OPTION;
4) 设置mysql的信息包大小,默认的太小,改大一点:
Linux配置打开 mysql/conf/my.cnf
:
[mysqld]
...
max_allowed_packet=1024M
5)重启mysql:
$ sudo /sbin/service mysqld restart
3、 Azkaban Web Server安装和配置
1) 从GitHub上下载源码:
git
clonehttps://github.com/azkaban/azkaban.git
2) build:
压缩为
tar
包
:
./gradlew distTar
或者压缩为
zip
包
:
./gradlew distZip
如果不是第一次
building
,最好先
clean
一下
:
./gradlew clean
创建的.tar.gz
文件的目录:例如/azkaban-web-server/build/distributions/azkaban-web-server-3.1.0.tar.gz
. cp/
opt/azkaban/
azkaban
-*/
build/distributions/*.tar.gz/
opt.
3) 解压缩
cd /opt
tar zxvf azkaban-exec-server-
3.1.
0.tar.gz
tar zxvf azkaban-web-server-
3.1.
0.tar.gz
tar zxvf azkaban-sql-
3.1.
0.tar.gz
4) 将azkaban sql表结构导入mysql
mysql> use azkaban;
mysql> source /opt/azkaban-sql
-3.1.0/create-all-sql
-3.1.0.sql
5)配置keystore
azkaban-web-server-3.1.0$ keytool -keystore keystore -alias jetty -genkey -keyalg RSA
输入密钥库口令
:
密钥库口令太短
-
至少必须为
6
个字符
输入密钥库口令
:
再次输入新口令
:
您的名字与姓氏是什么
?
[
Unknown]:
firstName
您的组织单位名称是什么
?
[
Unknown]:
companyName
您的组织名称是什么
?
[
Unknown]:
groupName
您所在的城市或区域名称是什么
?
[
Unknown]:
beijing
您所在的省
/
市
/
自治区名称是什么
?
[
Unknown]:
beijing
该单位的双字母国家
/
地区代码是什么
?
[
Unknown]:
CN
CN=
firstName, OU=
companyName, O=
groupName, L=beijing, ST=beijing, C=CN
是否正确
?[
否
]: Y
以上配置完成之后会在当前目录生成一个
keystore
文件。以下配置会用到。
6) 配置conf/azkaban.properties:
如果Azkaban WebServer下面没有conf目录,将azkaban-solo-web 下的conf目录拷贝过来,并作以下配置:
cat conf/azkaban.properties
# Azkaban Personalization Settings
azkaban.
name=Test
azkaban.
label=MyLocal Azkaban
azkaban.
color=#FF3601
azkaban.default.servlet.
path=/index
web.resource.
dir=web/
default.timezone.
id=America/Los_Angeles
# 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
database.
type=mysql
mysql.
port=3306
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.
port=8443
# jetty.use.ssl=false
jetty.
port=8081
jetty.
keystore=keystore
jetty.
password=azkaban
jetty.
keypassword=azkaban
jetty.
truststore=keystore
jetty.
trustpassword=azkaban
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=
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
注意:
配置的默认时区是:
default.timezone.
id=America/Los_Angeles 修改为:default.timezone.
id=Asia/Shanghai
7) 用户设置
进入
azkaban web
服务器
conf
目录,修改
azkaban-users.xml
,增加管理员用户:
<azkaban-users><userusername="azkaban"password="azkaban"roles="admin"groups="azkaban" /><userusername="metrics"password="metrics"roles="metrics"/><userusername="admin"password="admin"roles="admin,metrics" /><rolename="admin"permissions="ADMIN" /><rolename="metrics"permissions="METRICS"/></azkaban-users>
8) 启动azkaban web服务器
cd/
opt/azkaban-web-server-
3.1.
0/
bin/azkaban-web-start.
sh
报错:Exception: java.lang.StackOverflowError thrown from the UncaughtExceptionHandler in thread "main"
解决方式:在Azkaban-web-server 的conf目录下创建文件夹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
9) 访问验证https://192.168.0.61:8443/
4、 Azkaban Executor Server 安装和配置
进入azkaban-executor-server目录,将azkaban-web-server下的conf目录拷贝到
该目录下
1) 配置executor端的azkaban.properties
# Azkaban
default.timezone.
id=America/Los_Angeles
# 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=localhost
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
# JMX stats
jetty.connector.
stats=true
executor.connector.
stats=true
# uncomment to enable inmemory stats for azkaban
#executor.metric.reports=true
#executor.metric.milisecinterval.default=60000
2) 启动执行服务器:
bin/azkaban-executor-
start.sh