- Azkaban简介
官网: https://azkaban.github.io/
Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。
Azkaban定义了一种KV文件(properties)格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
它有如下功能特点:
Web用户界面
方便上传工作流
方便设置任务之间的关系
调度工作流
认证/授权(权限的工作)
能够杀死并重新启动工作流
模块化和可插拔的插件机制
项目工作区
工作流和任务的日志记录和审计 - Azkaban安装模式
Azkaban 有三种部署方式:单服务模式、2个服务模式、分布式多服务模式
- solo server model(单服务模式):该模式中 webServer 和 executorServer 运行在同一个进程中,进程名是AzkabanSingleServer。可以使用自带的H2数据库或者配置mysql数据。该模式适用于小规模的使用。此模式合适个人试用使用。它也可以用在小规模的使用案例中。
- two server model(2个服务模式):数据库为mysql,采用主从设置进行备份,管理服务器(webServer)和执行服务器(executorServer)在不同进程中运行,这种模式下,管理服务器和执行服务器互不影响。适用在较重的生成环境中。
- multiple-executor(分布式多服务模式):存放元数据的数据库为mysql,采用主从设置进行备份,管理服务器(webServer)和执行服务器(executorServer)在不同进程中运行。多个Executor 模式为最重的生产环境。
- Azkaban安装(两个服务模式安装)
-
安装前准备
安装MySQL
安装jdk1.8 -
下载,编译
软件下载目录 /export/softwares/, 软件安装目录 /export/servers/
cd /export/softwares/
wget https://github.com/azkaban/azkaban/archive/3.47.0.tar.gz
tar -zxvf 3.47.0.tar.gz -C ../servers/
cd /export/servers/azkaban-3.47.0/
yum -y install git
yum -y install gcc-c++
./gradlew distTar
# 编译完成之后得到我们需要的安装包在以下目录下即可获取得到
# azkaban-exec-server存放目录
/export/servers/azkaban-3.47.0/azkaban-exec-server/build/distributions
# azkaban-web-server存放目录
/export/servers/azkaban-3.47.0/azkaban-web-server/build/distributions
# azkaban-solo-server存放目录
/export/servers/azkaban-3.47.0/azkaban-solo-server/build/distributions
# 数据库文件
/export/servers/azkaban-3.47.0/azkaban-db/build/distributions
- 复制, 解压相关软件包
# 复制
cp /export/servers/azkaban-3.47.0/azkaban-exec-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz /export/softwares/
cp /export/servers/azkaban-3.47.0/azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz /export/softwares/
cp /export/servers/azkaban-3.47.0/azkaban-solo-server/build/distributions/azkaban-exec-solo-0.1.0-SNAPSHOT.tar.gz /export/softwares/
cp /export/servers/azkaban-3.47.0/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz /export/softwares/
# 解压
cd /export/softwares/
tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C ../servers/
tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C ../servers/
tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C ../servers/
tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz -C ../servers/
#重命名
cd /export/servers/
mv azkaban-web-server-0.1.0-SNAPSHOT/ azkaban-web-server-3.47.0
mv azkaban-exec-server-0.1.0-SNAPSHOT/ azkaban-exec-server-3.47.0
mv azkaban-solo-server-0.1.0-SNAPSHOT/ azkaban-solo-server-3.47.0
mv azkaban-db-0.1.0-SNAPSHOT/ azkaban-db-3.47.0
- 创建Azkaban元数据库
mysql -uroot -p
CREATE DATABASE azkaban;
use azkaban;
source /export/servers/azkaban-db-3.47.0/create-all-sql-0.1.0-SNAPSHOT.sql;
- 安装SSL配置
cd /export/servers/azkaban-web-server-3.47.0
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
-
azkaban web server安装
配置azkaban-web-server
首先将azkaban-solo-server安装目录下的conf文件夹拷贝到azkaban-web-server的安装目录下cp -r /export/servers/azkaban-solo-server-0.1.0-SNAPSHOT/conf/ /export/servers/azkaban-web-server-3.47.0/
修改azkaban-web-server的配置文件
cd /export/servers/azkaban-web-server-3.47.0/conf
vim azkaban.properties
#具体的配置
azkaban.name=MyAzkaban
azkaban.label=My Azkaban
default.timezone.id=Asia/Shanghai
#database.type=h2
#h2.path=./h2
#h2.create.tables=true
database.type=mysql
mysql.port=3306
mysql.host=node03
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
jetty.use.ssl=true
jetty.keystore=/export/servers/azkaban-web-server-3.47.0/keystore
jetty.password=azkaban
jetty.keypassword=azkaban
jetty.truststore=/export/servers/azkaban-web-server-3.47.0/keystore
jetty.trustpassword=azkaban
在conf目录下添加log4j.properties的配置文件
vim log4j.properties
#添加log4j代码
log4j.rootLogger=INFO, Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS Z} %p [%c{1}] %m%n
log4j.category.velocity=INFO
- azkaban executor server 安装
配置azkaban-exec-server
将azkaban-web-server的conf目录拷贝到azkaban-executor-server的安装路径下
cd /export/servers
cp -r /export/servers/azkaban-web-server-3.47.0/conf/ /export/servers/azkaban-exec-server-3.47.0/
添加插件 mkdir -p /export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes
将我们编译后的C文件execute-as-user.c
复制到这个目录来/export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes
然后执行以下命令生成execute-as-user
yum -y install gcc-c++
cd /export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes
gcc execute-as-user.c -o execute-as-user
chown root execute-as-user
chmod 6050 execute-as-user
添加配置文件
cd /export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes
vim commonprivate.properties
# 代码
execute.as.user=false
azkaban.native.lib=/export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes
最终生成如图
- 启动服务
启动azkaban-web-server
cd /export/servers/azkaban-web-server-3.47.0
bin/start-web.sh
启动azkaban exec server
cd /export/servers/azkaban-exec-server-3.47.0
bin/start-exec.sh
访问地址: https://ip:8443
如果出现访问报错, javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection
原因:浏览器安全证书限制。添加信任即可。
解决办法:使用https://ip:8443访问
即不要使用http访问,使用https。。。