Azkaban

1.出现契机

应用场景举例:

1、通过 Hadoop 先将原始数据同步到 HDFS 上;

2、借助 MapReduce 计算框架对原始数据进行清洗转换,生成的数据以分区表的形式存储到 多张 Hive 表中;

3、需要对 Hive 中多个表的数据进行 Join 处理,得到一个明细数据 Hive 大表; 4、将明细数据进行各种统计分析,得到结果报表信息; 5、需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。

2.常见工作流调度系统 & 对比

在 Hadoop 领域,常见的工作流调度器有 Oozie,Azkaban,Cascading,Hamake 等

2.1.各种调度工具对比

image-20180629104909306

image-20180629104925001

2.2.Azkaban 与 Oozie 对比

ooize 相比 azkaban 是一个重量级的任务调度系统,功能全面,但配置使用也更复杂。如果可以不 在意某些功能的缺失,轻量级调度器 azkaban 是很不错的候选对象。

 工作流定义

Azkaban 使用 Properties 文件定义工作流 Oozie 使用 XML 文件定义工作流

 定时执行

Azkaban 的定时执行任务是基于时间的 Oozie 的定时执行任务基于时间和输入数据

2.3.Azkaban 组件关系

关系数据库(目前仅支持 MySQL) web

管理服务器-AzkabanWebServer

执行服务器-AzkabanExecutorServer

image-20180629105120180

Azkaban 使用 MySQL 来存储它的状态信息,Azkaban Executor Server 和 Azkaban Web Server 均使用到了 MySQL 数据库。

它有如下功能特点:

 Web 用户界面

 方便上传工作流

 方便设置任务之间的关系  调度工作流

 认证/授权(权限的工作)

 能够杀死并重新启动工作流

 模块化和可插拔的插件机制

 项目工作区

 工作流和任务的日志记录和审计

3.Azkaban 安装部署

3.1准备工作

Azkaban Web 服务器:azkaban-web-server-2.5.0.tar.gz

Azkaban Excutor 执行服务器 :azkaban-executor-server-2.5.0.tar.gz

Azkaban 初始化脚本文件:azkaban-sql-script-2.5.0.tar.gz

3.2安装说明

将安装文件上传到集群,最好上传到安装hive、sqoop 的机器上,方便命令的执行。并最好同

一存放在 apps 目录下,用于存放源安装文件.新建 azkaban 目录,用于存放 azkaban 运行程序

3.3解压

1
2
3
tar -zxvf azkaban-web-server-2.5.0.tar.gz -C /home/apps/ap/azkaban/
tar -zxvf azkaban-executor-server-2.5.0.tar.gz -C /home/apps/ap/azkaban/
tar -zxvf azkaban-sql-script-2.5.0.tar.gz -C /home/apps/ap/azkaban/

3.4进入 mysql 导入任务 job 表

1
2
3
4
5
mysql> create database azkaban; 
Query OK, 1 row affected (0.01 sec)
mysql> use azkaban;
Database changed
mysql> source /home/hadoop/apps/azkaban/azkaban-script-2.5.0/create-all-sql-2.5.0.sql;

3.5创建 SSL 配置

最好是在 azkaban 目录下执行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 执行命令: 
keytool -keystore keystore -alias jetty -genkey -keyalg RSA

# 运行此命令后,会提示输入当前生成 keystore 的密码及相应信息,输入密码请劳记,信息如下:
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]:
What is the name of your organizational unit?
[Unknown]:
What is the name of your organization?
[Unknown]:
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]: CN
Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN correct?
[no]: y

Enter key password for <jetty>
(RETURN if same as keystore password):

此时, 会发现目录下有一个 Keystore 文件

------------------------------------------
完成上述工作后,将在当前目录生成 keystore 证书文件,将 keystore 拷贝到 azkaban web 服务 器根目录中.如:

cp keystore azkaban-web-2.5.0

3.6 修改配置文件

注意: 配置文件后面一定不要有空格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
1) 生成时区配置文件 Asia/Shanghai,用交互式命令 tzselect 即可, 如果有的话就不用再生成了
tzselect

2) 拷贝该时区文件,覆盖系统本地时区配置
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

3)  azkaban web 服务器配置 

3.1)  配置 web 的 azkaban.properties 
cd ~/apps/azkaban/azkaban-web-2.5.0/conf/
vi azkaban.properties
 以下是需要修改的内容 
#默认根 web 目录
web.resource.dir=/home/ap/apps/azkaban/azkaban-web-2.5.0/web

#默认时区,已改为亚洲/上海 默认为美国
default.timezone.id=Asia/Shanghai

#用户配置,具体配置参加下文
user.manager.xml.file=/home/ap/apps/azkaban/azkaban-web-2.5.0/conf/azkaban-users.xml

#global配置文件所在位置
executor.global.properties=/home/ap/apps/azkaban/azkaban-executor-2.5.0/conf/global.properties

#数据库相关配置
mysql.host=cs2
mysql.database=azkaban
mysql.user=root
mysql.password=123

#SSL 文件名
jetty.keystore=/home/ap/apps/azkaban/azkaban-web-2.5.0/keystore
#SSL 文件密码
jetty.password=123456
#Jetty 主密码 与 keystore 文件相同
jetty.keypassword=123456
#SSL 文件名
jetty.truststore=/home/ap/apps/azkaban/azkaban-web-2.5.0/keystore
# SSL 文件密码
jetty.trustpassword=123456

3.2) 配置 web 的 azkaban-users.xml
# 增加 管理员用户
vi azkaban-users.xml

<azkaban-users>
<user username="azkaban" password="azkaban" roles="admin" groups="azkaban"/>
<user username="metrics" password="metrics" roles="metrics"/>
# 此行是加的, 指用户名密码都为 admin
<user username="admin" password="admin" roles="admin,metrics"/>

<role name="admin" permissions="ADMIN"/>
<role name="metrics" permissions="METRICS"/>
</azkaban-users>

4)  配置执行服务器 executor 

cd apps/azkaban/azkaban-executor-2.5.0/conf/
vi azkaban.properties
-----
以下是需要修改的内容
------
#时区
default.timezone.id=Asia/Shanghai

# Azkaban JobTypes 插件配置,插件所在位置
azkaban.jobtype.plugin.dir=/home/hadoop/apps/azkaban/azkaban-executor-2.5.0/plugins/jobtypes

#Loader for projects
executor.global.properties=/home/ap/apps/azkaban/azkaban-executor-2.5.0/conf/global.properties

#mysql 需要修改的地方
mysql.host=cs2
mysql.database=azkaban
mysql.user=root
mysql.password=123

5) 配置环境变量 
vi .zshrc
# azkaban
export AZKABAN_WEB_HOME=/home/ap/apps/azkaban/azkaban-web-2.5.0
export AZKABAN_EXE_HOME=/home/ap/apps/azkaban/azkaban-executor-2.5.0
export PATH=$PATH:$AZKABAN_WEB_HOME/bin:$AZKABAN_EXE_HOME/bin

3.7 启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1)  启动 Azkaban Web Server: 
# ps: .out 是日志, 可以先创建 logs 目录, 日志地址随便
# 前台启动
azkaban-web-start.sh
# 后台启动
nohup azkaban-web-start.sh 1>/home/ap/logs/azwebstd.out 2>/home/ap/logs/azweberr.out &

2)  启动 Azkaban Executor: 
#前台启动
azkaban-executor-start.sh

# 后台启动
nohup azkaban-executor-start.sh 1>/home/ap/logs/azexstd.out 2>/home/ap/logs/azexerr.out &

3)  登录 webUI 
https://cs2:8443/
u: admin
p: admin

# 注意: 配置后面不能有空格!!!

4.Azkaban 实战演示

见这里

如果帮到你, 可以给我赞助杯咖啡☕️
0%