经过自己源码编译失败,版本问题等等, azkaban终于搞好了,最后选了2.5.0版本
一、azkaban介绍
Azkaban是由Linkedin开源的一个批处理工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。它的功能主要有以下特点:
1、web用户界面
2、方便上传工作流
3、方便设置任务之间的关系
4、调度工作流
5、认证/授权(权限的工作)
6、能够杀死并重新启动工作流
7、模块化和可插拔的插件机制
8、项目工作区
9、工作流和任务的日志记录和审计
**
二、azkaban安装部署
资源链接
链接:https://pan.baidu.com/s/1WRnE0xRTJAG2xxaqqZYXAA
提取码:ozyr
目前azkaban只支持mysql,需要在服务器上安装mysql,并建立用户和密码
2.2 安装azkaban
2.2.1、在服务器中创建azkaban目录
mkdir azkaban
2.2.2、将安装包上传到azkaban目录中,进行解压
tar -zxvf azkaban-sql-script-2.5.0.tar.gz
tar -zxvf azkaban-executor-server-2.5.0.tar.gz
tar -zxvf azkaban-web-server-2.5.0.tar.gz
2.2.3、为了后续操作简单,解压后的文件重新命名
mv azkaban-web-2.5.0 server
mv azkaban-executor-2.5.0 executor
2.2.4、azkaban脚本导入
进入mysql,创建azkaban数据库,并将解压的脚本导入到azkaban数据库。
mysql> create database azkaban;
mysql> use azkaban;
mysql> source /usr/local/modules/create-all-sql-2.5.0.sql;
2.3 创建SSL配置
1、生成keystore的密码及相应信息
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
输入的主密码
(如果和 keystore 密码相同,按回车):
再次输入新密码:
为了方便我把所有的密码都设置成了123456
2、将keystore拷贝到azkaban web服务器根目录中:
cp keystore /usr/local/modules/azkaban/server/
2.5 配置文件
2.5.1 web服务器配置
1、进入azkaban web服务器安装目录conf目录,打开azkaban.properties文件
2、按照如下配置修改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=web/ #默认根web目录
default.timezone.id=Asia/Shanghai #默认时区,已改为亚洲/上海 默认为美国
#Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager #用户权限管理默认类
user.manager.xml.file=/root/azkaban/server/conf/azkaban-users.xml #用户配置(最好写成绝对地址)
#Loader for projects
executor.global.properties=conf/global.properties # global配置文件所在位置
azkaban.project.dir=projects #
database.type=mysql #数据库类型
mysql.port=3306 #端口号
mysql.host=root #数据库连接IP
mysql.database=azkaban #数据库实例名
mysql.user=root #数据库用户名
mysql.password=123456 #数据库密码
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=keystore #SSL文件名
jetty.password=123456 #SSL文件密码
jetty.keypassword=123456 #Jetty主密码 与 keystore文件相同
jetty.truststore=keystore #SSL文件名
jetty.trustpassword=123456 #SSL文件密码
# 执行服务器属性
executor.port=12321 #执行服务器端口
#邮件设置
mail.sender=xxxxxxxx@163.com #发送邮箱
mail.host=smtp.163.com #发送邮箱smtp地址
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>
2.5.2 执行服务器配置
1、进入执行服务器安装目录conf下,打开azkaban.properties
2、编辑azkaban.properties文件
#Azkaban
default.timezone.id=Asia/Shanghai #时区
# Azkaban JobTypes 插件配置
azkaban.jobtype.plugin.dir=plugins/jobtypes #jobtype插件所在位置
#Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
#数据库设置
database.type=mysql #数据库类型(目前只支持mysql)
mysql.port=3306 #数据库端口号
mysql.host=localhost #数据库IP地址
mysql.database=azkaban #数据库实例名
mysql.user=root #数据库用户名
mysql.password=123456 #数据库密码
mysql.numconnections=100 #最大连接数
# 执行服务器配置
executor.maxThreads=50 #最大线程数
executor.port=12321 #端口号(如修改,请与web服务中一致)
executor.flow.threads=30 #线程数
2.6 启动web服务器
在azkaban web服务器目录下执行启动命令
server# bin/azkaban-web-start.sh
2.7启动执行服务器
在执行服务 器目录下执行启动命令
executor # bin/azkaban-executor-start.sh
启动完成后,在浏览器(建议使用谷歌浏览器)中输入https://服务器IP地址:8443,即可访问azkaban服务了。在登录中输入刚才新的户用名及密码(默认用户名和密码都是azkaban),点击 login。
三、安装过程有可能出现的问题
问题1、启动azkaban时出现user xml file conf/azkaban-users.xml doesn’t exit
这个问题我们在安装的时候已经提出来,就是在2.5.1步骤中配置/root/azkaban/server/conf目录下的azkaban.properties文件,将azkaban-users.xml路径改成绝对路径
接着再重新启动一下试试。
问题2、启动azkaban出现错误:Exception in thread “main” java.lang.NoClassDefFoundError: Could not initialize class org.apache.derby.jdbc.AutoloadedDriver40
这个问题是“NoClassDefFoundError”是启动azkaban时并没有找到类;“Could not initialize class org.apache.derby.jdbc.AutoloadedDriver40” 时azkaban的server和executor中缺少一个叫derby.jar的包,我在github上第四个文件就是下载的derby的一个jar包,解压出来找到derby.jar,然后上传到/root/azkaban/server/lib和/root/azkaban/executor/lib目录中,然后重新启动试试。
问题3、启动时azkaban 提交 job报错:Error submitting flow command. org.apache.http.conn.HttpHostConnectException: Connection to http://localhost:12321 refused
导致的这个问题的原因可能是123321端口已经开启,产生了冲突
解决办法:
排查 azkaban 执行服务器有没有启动。使用 jps 命令查看:
AzkabanExecutorServer
AzkabanWebServer
四、azkaban实战
Azkaban内置的任务类型支持command、java
1、command类型之单一job案例
a、创建job描述文件(文件类型一定是.job格式)
b、将job资源文件打包成zip文件
c、通过azkaban的web管理平台创建project并上传job压缩包
首先创建project
在这里插入图片描述
d、启动执行该job
绿色:执行成功
蓝色:正在执行
红色:执行失败
这里是绿色说明执行成功。这里特别注意一下:command.job如果是windows系统下创建的可能会报错,这时候尽量是在linux系统下(比如服务器)创建该文件然后编辑打包上传。
2、command类型之多job工作流案例
2.1 创建有依赖关系的多个job描述
第一个job:master.job
第二个job:slave.job
2.3 创建工程
2.4 在azkaban的web管理界面创建工程并上传zip包
2.5 启动工作流并查看结果