安装篇
1.下载资料
从Azkaban官网上下载3.X的源码资料
cd /opt
下载命令:git clone https://github.com/azkaban/azkaban.git (2017-12-24克隆的版本为:3.39.0-17-g7b7833a)
执行命令将azkaban克隆到本地opt目录下。
2.编译
进入到Azkaban的根目录下面进行编译,执行./gradlew build(这里需要等待一些时间)
编译成功会显示下图界面
编译好的文件都放在build/distributions/目录下
执行 cp –r azkaban-*/build/distributions/*.tar.gz /opt/ 拷贝编译好的tar.gz包
3.配置mysql
1)建库,同时授权
用root登录mysql
mysql -uroot -p123456
创建azkaban数据库
CREATE DATABASE azkaban;
授权
Grant all on azkaban.* to azkaban@'master' identified by 'azkaban';
Grant all on azkaban.* to azkaban@'localhost' identified by 'azkaban';
Grant all on azkaban.* to azkaban@'%' identified by 'azkaban';
2)运行相关脚本建表
解压azkaban-db-3.39.0-17-g7b7833a.tar.gz
tar –zxvf azkaban-db-3.39.0-17-g7b7833a.tar.gz
用azkaban用户登录
mysql -uazkaban –pazkaban
在mysql的azkaban库里source以下这个sql脚本,建表
4.配置Azkaban Web Server
1)解压azkaban-web-server-3.0.0.tar.gz到指定目录
tar -zxvf azkaban-web-server-3.39.0-17-g7b7833a.tar.gz –C /opt/
(
一般克隆后没有conf目录,需要从azkaban-solo-server-3.39.0-17-g7b7833a copy
此时还需要copy plugins/目录
)
2)配置jetty ssl
到其web目录下运行
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
Enter keystore password: password
What is your first and last name? 您的名字与姓氏是什么?
[Unknown]: jetty.mortbay.org
What is the name of your organizational unit?您的组织单位名称是什
[Unknown]: Jetty
What is the name of your organization?您的组织名称是什么?
[Unknown]: Mort Bay Consulting Pty. Ltd.
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]:
Is CN=jetty.mortbay.org, OU=Jetty, O=Mort Bay Consulting Pty. Ltd.,
L=Unknown, ST=Unknown, C=Unknown correct?正确吗?
[no]: yes
Enter key password for <jetty>
(RETURN if same as keystore password): password
注意:这里要设置的密码比较多,为了防止弄混,建议全用一样的密码,至于要让填写信息的,直接回车即可,会返回unknown。
完成上述工作后,将在当前目录生成 keystore 证书文件
3)修改web控制文件
进入web服务器安装目录conf目录,修改azkaban.properties文件
命令vim azkaban.properties
内容说明及更改如下:
#Azkaban Personalization Settings
azkaban.name=Test #服务器UI名称,用于服务器上方显示的名字
azkaban.label=My Local Azkaban #描述
azkaban.color=#FF3601 #UI颜色
azkaban.default.servlet.path=/index #
web.resource.dir= /opt/azkaban-web-server-3.39.0-17-g7b7833a/web/
#默认根web目录,建议改成全路径,可以在任何地方直接运行,下同
default.timezone.id=Asia/Shanghai #默认时区,已改为亚洲/上海 默认为美国
#Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager #用户权限管理默认类
user.manager.xml.file=/opt/azkaban-web-server-3.39.0-17-g7b7833a/conf/azkaban-users.xml
#用户配置,具体配置参考下文
#Loader for projects
executor.global.properties=/opt/azkaban-web-server-3.39.0-17-g7b7833a/conf/global.properties
# global配置文件所在位置
azkaban.project.dir=projects
database.type=mysql #数据库类型
mysql.port=3306 #端口号
mysql.host=x.x.x.x #数据库连接IP
mysql.database=azkaban #数据库实例名
mysql.user=azkaban #数据库用户名
mysql.password=azkaban #数据库密码
mysql.numconnections=100 #最大连接数
# Velocity dev mode
velocity.dev.mode=false
# Jetty服务器属性.
jetty.maxThreads=25 #最大线程数
jetty.ssl.port=8443 #Jetty SSL端口
jetty.port=8081 #Jetty端口
jetty.keystore=/opt/azkaban-web-server-3.39.0-17-g7b7833a/web/keystore #SSL文件名,使用keytool生成的keystone文件
jetty.password=azkaban #SSL文件密码
jetty.keypassword=azkaban #Jetty主密码 与 keystorm文件相同
jetty.truststore=keystore #SSL文件名
jetty.trustpassword=azkaban # SSL文件密码
# 执行服务器属性
executor.port=12321 #执行服务器端口
# 邮件设置(如果不用邮件报警功能,这里可以不设置)
mail.sender= #发送邮箱
mail.host= #发送邮箱smtp地址
mail.user= #发送邮件时显示的名称
mail.password= #邮箱密码
job.failure.email= #任务失败时发送邮件的地址,一般不设置,在任务运行时设置,下同
job.success.email= #任务成功时发送邮件的地址
lockdown.create.projects=false #
cache.directory=cache #缓存目录
4)用户配置(可以不做另外设置)
进入azkaban web服务器conf目录,修改azkaban-users.xml,这个文件存放用户登录信息以及权限信息。同时增加管理员用户admin。
<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”/>
<role name="admin" permissions="ADMIN" />
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
5)配置plugins
在Azkaban 3.0至后版本中增加了一个新的安全性增强功能,默认情况下,Azkaban作业现在可以作为提交用户或流的user.to.proxy运行。这确保了Azkaban利用Linux权限安全机制,并在操作上简化了资源监视和可见性。
Execute.as.user默认设置为true。在需要的情况下,也可以在azkaban-plugin的commonprivate.properties中将其配置为false
所以将copy过来的plugins/ jobtypes/ commonprivate.properties 文件,添加Execute.as.user=false。
如果需要使用这个安全策略,则需要配置azkaban.native.lib = execute-as-user.c文件所在的路径[参见:http://azkaban.github.io/azkaban/docs/latest/#jobtype-plugins Plugin Configurations Execute-As-User]
注意:execute-as-user.c文件gcc编译后,见下图:
5)启动web server
在web目录下创建日志文件夹:
cd /opt/azkaban-web-server-3.39.0-17-g7b7833a
mkdir logs 用来存放程序运行的日志文件
启动web: sh bin/azkaban-web-start.sh
查看是否启动成功,首先jps查看是否含有azkaban web server进程,然后访问网页(用火狐或者谷歌)https://主机ip:8081
输入之前在azkaban-users.xml中设置好的用户名密码,进入即可。
自此完成了azkaban的web-server设置与启动,还需要安装执行服务:exec-server
5 配置Azkaban Executor Server
1)解压azkaban-exec-server-3.39.0-17-g7b7833a.tar.gz到指定opt目录
tar -zxvf azkaban-exec-server-3.39.0-17-g7b7833a.tar.gz –C /opt/
1) cp –r azkaban-solo-server-3.39.0-17-g7b7833a/plugins/jobtypes azkaban-exec-server-3.39.0-17-g7b7833a/
a) 修改commonprivate.properties文件中参数为false。
2)修改执行控制文件
cd azkaban-exec-server-3.39.0-17-g7b7833a/conf/
vi azkaban.properties
#Azkaban
default.timezone.id=Asia/Shanghai
# Azkaban JobTypes
azkaban.jobtype.plugin.dir=/opt/azkaban-exec-server-3.39.0-17-g7b7833a/plugins/jobtypes
#Loader for projects
executor.global.properties=/opt/azkaban-exec-server-3.39.0-17-g7b7833a/conf/global.properties
azkaban.project.dir=projects
#database
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
#executor set
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30
3)启动web server
cd azkaban-exec-server-3.39.0-17-g7b7833a/
mkdir logs 用来存放程序运行的日志文件
启动executor server服务: sh bin/azkaban-executor-start.sh
异常azkaban报错:azkaban.utils.UndefinedPropertyException: Missing required property azkaban.native.lib
解决方法:在azkaban-executor-server目录里把azkaban-solo-web下/plugins/jobtypes/commonprivate.properties拷贝过来(带目录一起拷贝)加一行参数
azkaban.native.lib=false
保存后重启azkaban-executor-server就行了
异常 Exception in thread "main" azkaban.jobtype.JobTypeManagerException
1. 不存在azkaban-jobtype-3.0.0.jar,将azkaban-jobtype-3.0.0.jar 拷贝到plugins/jobtypes