Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

安装前准备

(1)将Azkaban Web服务器、Azkaban执行服务器要安装机器的/opt/software目录下:

  • azkaban-web-server-2.5.0.tar.gz
  • azkaban-executor-server-2.5.0.tar.gz
  • azkaban-sql-script-2.5.0.tar.gz
  • mysql-libs.zip

(2)目前azkaban只支持 mysql作为元数据库,需安装mysql,本文档中默认已安装好mysql服务器

安装Azkaban

(1)在/opt/module/目录下创建azkaban目录
(2)解压azkaban-web-server-2.5.0.tar.gz、azkaban-executor-server-2.5.0.tar.gz、azkaban-sql-script-2.5.0.tar.gz到/opt/module/azkaban目录下
解压完成后的文件夹如下图所示:

(3)初始化Azkaban的元数据库
登录mysql,创建azkaban的数据库,并执行脚本create-all-sql-2.5.0.sql,如下所示:

mysql> create database azkaban;  
Query OK, 1 row affected (0.00 sec)
mysql> use azkaban;
Database changed
mysql> source /opt/module/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql

创建SSL配置

(1)生成 keystore的密码及相应信息

[root@cdh02 azkaban]$ keytool -keystore keystore -alias jetty -genkey -keyalg RSA  
输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]:
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的州或省份名称是什么?
[Unknown]:
该单位的两字母国家代码是什么
[Unknown]: CN
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN 正确吗?
[否]: y

输入<jetty>的主密码
(如果和 keystore 密码相同,按回车) :

(2)将keystore 考贝到 azkaban web服务器根目录中

[root@cdh02 azkaban]# mv keystore  azkaban-web-2.5.0/

Web服务器配置

(1)进入azkaban web服务器安装目录 conf目录,修改azkaban.properties文件
(2)按照如下配置修改azkaban.properties文件

#Azkaban Personalization Settings      
#服务器UI名称,用于服务器上方显示的名字
azkaban.name=Test
#描述
azkaban.label=My Local Azkaban
#UI颜色
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
#根web目录,配置绝对路径,即web的目录
web.resource.dir=/opt/module/azkaban/azkaban-web-2.5.0/web
#默认时区,已改为亚洲/上海 默认为美国
default.timezone.id=Asia/Shanghai
#用户权限管理默认类
user.manager.class=azkaban.user.XmlUserManager
#用户配置,配置绝对路径,即azkaban-users.xml的路径
user.manager.xml.file=/opt/module/azkaban/azkaban-web-2.5.0/conf/azkaban-users.xml
#Loader for projects .global配置文件所在位置,即global.properties绝对路径
executor.global.properties=/opt/module/azkaban/azkaban-executor-2.5.0/conf/global.properties
azkaban.project.dir=projects
#数据库类型
database.type=mysql
mysql.port=3306
mysql.host=cdh01
mysql.database=azkaban
mysql.user=root
#数据库密码
mysql.password=123qwe
mysql.numconnections=100
# Velocity dev mode
velocity.dev.mode=false
# Jetty服务器属性.
#最大线程数
jetty.maxThreads=25
#Jetty SSL端口
jetty.ssl.port=8443
#Jetty端口
jetty.port=8081
#SSL文件名,即keystore绝对路径
jetty.keystore=/opt/module/azkaban/azkaban-web-2.5.0/keystore
#SSL文件密码,本配置与keystore密码相同
jetty.password=123qwe
#Jetty主密码 与 keystore文件相同
jetty.keypassword=123qwe
#SSL文件名,即keystore绝对路径
jetty.truststore=/opt/module/azkaban/azkaban-web-2.5.0/keystore
# SSL文件密码
jetty.trustpassword=123qwe
# 执行服务器属性, 执行服务器端口
executor.port=12321
# 邮件设置,发送邮箱
mail.sender=xxxxxxxx@163.com
#发送邮箱smtp地址
mail.host=smtp.163.com
#发送邮件时显示的名称
mail.user=xxxxxxxx
#邮箱密码
mail.password=**********
#任务失败时发送邮件的地址
job.failure.email=xxxxxxxx@163.com
#任务成功时发送邮件的地址
job.success.email=xxxxxxxx@163.com
lockdown.create.projects=false
#缓存目录
cache.directory=cache

(3)web服务器用户配置
在azkaban web服务器安装目录 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" />
<role name="admin" permissions="ADMIN" />
<role name="metrics" permissions="METRICS"/>
</azkaban-users>

executor服务器配置

(1)进入executor安装目录,修改azkaban.properties

#Azkaban  
default.timezone.id=Asia/Shanghai
# Azkaban JobTypes Plugins
azkaban.jobtype.plugin.dir=./../plugins/jobtypes
#Loader for projects
executor.global.properties=/opt/module/azkaban/azkaban-executor-2.5.0/conf/global.properties
azkaban.project.dir=projects
database.type=mysql
mysql.port=3306
mysql.host=cdh01
mysql.database=azkaban
mysql.user=root
mysql.password=123qwe
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30

启动web服务器

[root@cdh02 azkaban-web-2.5.0]# bin/azkaban-web-start.sh  &

启动executor服务器

[root@cdh02 azkaban-executor-2.5.0]# bin/azkaban-executor-start.sh  &