一、安装部署
(1)在/usr/local/目录下创建 azkaban 目录,将azkaban-web-server-2.5.0.tar.gz、 azkaban-executor-server-2.5.0.tar.gz、 azkaban-sql-script-2.5.0.tar.gz 三个包上传到目录下并解压分别重命名为 server 和 executor 。
(2)进入 mysql,创建 azkaban 数据库,并将 azkaban-sql-script-2.5.0.tar.gz 解压的脚本导入到 azkaban 数据库。
mysql -uroot -p199032
create database azkaban;
use azkaban;
source /usr/local/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql;
(3)生成密钥对和证书(在server目录下执行命令,因为 azkaban 的页面是需要https的)
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
(4)时间同步配置
(5)Web 服务器配置
cd /usr/local/azkaban/server/conf
a、修改 azkaban.properties 文件(标注修改的部分)
#Azkaban Personalization Settings
#服务器 UI 名称,用于服务器上方显示的名字
azkaban.name=Test
#描述
azkaban.label=My Local Azkaban
#UI 颜色
azkaban.color=#FF3601 azkaban.default.servlet.path=/index
#(修改)默认 web server 存放 web 文件的目录
web.resource.dir=/usr/local/azkaban/server/web/
#(修改)默认时区,已改为亚洲/上海 默认为美国
default.timezone.id=Asia/Shanghai
#Azkaban UserManager class user.manager.class=azkaban.user.XmlUserManager
#(修改)用户权限管理默认类(绝对路径)
user.manager.xml.file=/usr/local/azkaban/server/conf/azkaban-users.xml
#Loader for projects
#(修改)global 配置文件所在位置(绝对路径)
executor.global.properties=/usr/local/azkaban/executor/conf/global.properties
azkaban.project.dir=projects
#数据库类型
database.type=mysql
#端口号
mysql.port=3306
#(修改)数据库连接 IP
mysql.host=hadoop114
#数据库实例名
mysql.database=azkaban
#数据库用户名
mysql.user=root
#(修改)数据库密码
mysql.password=199032
#最大连接数
mysql.numconnections=100
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
# Jetty 服务器属性.
#最大线程数
jetty.maxThreads=25
#Jetty SSL 端口
jetty.ssl.port=8443
#Jetty 端口
jetty.port=8081
#(修改)SSL 文件名,客户端用来判断服务端发过来的证书是否可信(绝对路径)
jetty.keystore=/usr/local/azkaban/server/keystore
#(修改)SSL 文件密码,生成时候输入的
jetty.password=123456
#(修改)Jetty 主密码与 keystore 文件相同
jetty.keypassword=123456
#(修改)SSL 文件名,服务端用来判断客户端发过来的证书是否可信(绝对路径)
jetty.truststore=/usr/local/azkaban/server/keystore
#(修改)SSL 文件密码
jetty.trustpassword=123456
# Azkaban Executor settings
executor.port=12321
# mail settings
#(修改)配置邮箱的发送者
mail.sender= wokoone@163.com
mail.host= smtp.163.com
mail.user= wokoone@163.com
#邮箱客户端的授权密码
mail.password= wang199032
job.failure.email=
job.success.email=
lockdown.create.projects=false
cache.directory=cache
配置邮箱客户端的授权密码
等启动成功之后在页面上配置邮件接收者
b、修改 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>
(6)执行服务器配置
cd /usr/local/azkaban/executor/conf
a、修改 azkaban.properties 文件(标注修改的部分)
#Azkaban
#(修改)时区
default.timezone.id=Asia/Shanghai
# Azkaban JobTypes Plugins
#jobtype 插件所在位置
azkaban.jobtype.plugin.dir=plugins/jobtypes
#(修改)Loader for projects
executor.global.properties=/usr/local/azkaban/executor/conf/global.properties
azkaban.project.dir=projects
database.type=mysql
mysql.port=3306
mysql.host=hadoop114
mysql.database=azkaban
mysql.user=root
mysql.password=199032
mysql.numconnections=100
# Azkaban Executor settings
#最大线程数
executor.maxThreads=50
#端口号(如修改,请与 web 服务中一致)
executor.port=12321
#线程数
executor.flow.threads=30
(7)启动、停止Executor 服务器,在 azkaban 根目录下执行命令
./executor/bin/azkaban-executor-start.sh
./executor/bin/azkaban-executor-shutdown.sh
(8)启动 Web 服务器
./server/bin/azkaban-web-start.sh
注意:先执行 executor,再执行 web,避免 Web Server 会因为找不到执行器启动失败。
(9)访问页面,在登录中输入刚才在 azkaban-users.xml 文件中新添加的户用名及密码,注意:(显示不是安全连接,点击高级,继续前往)。
https://hadoop114:8443
二、Azkaban 实战
1、单一 job 案例
(1)在桌面创建 job 描述文件
vim first.job
第一种形式:直接输出
#first.job
type=command
command=echo 'this is my first job'
第二种形式:执行脚本
#first.job
type=command
command=sh p1.sh
p1.sh
date >> /usr/local/test/test.txt
(2)将 job 资源文件打包成 zip 文件并上传(注意:目前,Azkaban 上传的工作流文件只支持 xxx.zip 文件。zip 应包含 xxx.job 运行作业所需的文件和任何文件(文件名后缀必须以.job 结尾,否则无法识别)。作业名称在项目中必须是唯一的。)
2、多 job 工作流案例
(1)在桌面创建4个 job 描述文件,执行流程为 1先执行,然后2和3并行执行,最后执行4。
first.job
type=command
command=echo "first"
second.job
type=command
command=echo "second"
#依赖的上一个任务的文件名,多个以逗号分隔,上一个执行完之后才执行
dependencies=first
third.job
type=command
command=echo "third"
#依赖的上一个任务的文件名,多个以逗号分隔,上一个执行完之后才执行
dependencies=first
fouth.job
type=command
command=echo "fouth"
#依赖的上一个任务的文件名,多个以逗号分隔,上一个执行完之后才执行
dependencies=second,third
(2)4个文件打成一个zip包,名字随意,上传至服务并执行。
3、调度 java 程序
(1)使用 Azkaban 调度 java 程序
package com.wang;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @Author: wang
* @Date: 2020/2/4 15:41
* @Description:
*/
public class AzkabanTest {
public void run() throws IOException {
FileOutputStream fos = new FileOutputStream("/usr/local/azkaban/test.txt");
fos.write("this is a java progress".getBytes());
fos.close();
}
public static void main(String[] args) throws IOException {
AzkabanTest azkabanTest = new AzkabanTest();
azkabanTest.run();
}
}
(2)编写 job 文件
type=javaprocess
java.class=com.wang.AzkabanTest
#程序打完jar包的名字
classpath=./xxx.jar
(3)将文件和jar包打成zip包上传至服务并执行。