一、什么是Azkaban
1.由Linkedln创建,用于运行Hadoop作业
2.批处理工作流作业调度程序
3.解决排序问题
4.提供易于使用的Web用户界面来维护和跟踪工作流程
二、常见的工作流调度器
Crontab
Linux系统自带,可以用来进行定时调度
Oozie
管理Hdoop作业(job)的工作流程的重量级调度管理系统
Azkaban
为了解决Hadoop的任务依赖关系问题的轻量级调度管理系统
Airflow
一个可编程的工作流调度、监控平台
Azkaban和Oozie的区别
工作流定义
Azkaban使用yaml(Azkaban 3.x版本)格式文件定义工作流
Oozie使用XML文件定义工作流
定时执行
Azkaban的定时执行任务是基于时间的
Oozie的定时执行任务基于时间和输入数据
资源管理
Azkaban有较严格的权限控制,如用户对工作流进行读/写/执行等操作
Oozie暂无严格的权限控制
Azkaban特点
- 兼容任何版本的Hadoop
- 易于使用的web用户界面
- 简单的 web 和 http 工作流上传
- 项目工作区
- 工作流调度
- 模块化和可插拔的插件机制
- 认证和授权
- 跟踪用户操作
- 关于失败和成功的电子邮件警报
- SLA告警和自动查杀
- 重试失败的作业
三、Azkaban架构
关系型数据库 (MySQL)
Azkaban 使用 MySQL 来存储它的大部分状态
AzkabanWebServer
AzkabanWebServer 是所有 Azkaban 的主要管理器
处理项目管理、身份验证、调度程序和执行监控,Web 用户界面
AzkabanExecutorServer
执行程序
四、Azkaban部署模式
solo-server mode
DB 嵌入 H2,Web 服务器和执行器服务器运行在同一进程中
two-server mode
数据库应该由设置了主从设置的 MySQL 实例支持
Web 服务器和执行器服务器应该运行在不同的进程中
multiple executor mode
它的数据库应该由设置了主从设置的 MySQL 实例支持
Web 服务器和执行器服务器最好运行在不同的主机上
五、Azkaban安装
5.1 源码包下载
Azkaban官网地址:https://azkaban.github.io/
源码包下载地址:https://github.com/azkaban/azkaban/tags
5.2 源码包编译
5.2.1 编译前提
需要jdk1.8或更高版本
5.2.2 编译Azkaban
# 编译 Azkaban
./gradlew build
# 清理编译出来的文件
./gradlew clean
# 编译并发布
./gradlew installDist
# 运行测试用例
./gradlew test
# 不执行测试用例进行编译Azkaban【一般我们执行这一句就可以了,如果失败了,就多执行几次,直到成功为止】
./gradlew build -x test
5.3 solo模式安装
5.3.1 解压压缩包
mkdir /opt/install/azkaban
tar -zxvf /opt/software/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C /opt/install/azkaban/
#更改文件夹名称
mv azkaban-solo-server-0.1.0-SNAPSHOT/ azkaban-solo-server
5.3.2 启动 AzkabanSingleServer服务
# 进入文件夹
cd /opt/install/azkaban/azkaban-solo-server/
# 启动
bin/start-solo.sh
5.3.3 查看进程
[root@singleNode azkaban-solo-server]# jps
440294 AzkabanSingleServer
5.3.4 关闭 AzkabanSingleServer服务
bin/shutdown-solo.sh
5.4 two-server安装
5.4.1 数据库准备
5.4.1.1 修改mysql配置文件
# 拷贝配置文件模板
cp /usr/share/mysql/my-small.cnf /etc/my.cnf.d/
# 修改配置文件
vim /etc/my.cnf.d/my-small.cnf
---------------------------------
[mysqld]
...
max_allowed_packet=1024M
---------------------------------
# 重启mysql来让配置生效
systemctl restart mysql
5.4.1.2 建表
-- 创建数据库
CREATE DATABASE azkaban;
-- 创建用户,用户名和密码都是azkaban
mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
--赋予用户名为azkaban增删改查权限
-- give the user INSERT, SELECT, UPDATE, DELETE permission on all tables in the Azkaban db.
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
-- 刷新权限
mysql> flush privileges;
-- 切换数据库
mysql> use azkaban;
-- 创建Azkaban表
mysql> source /opt/install/azkaban/azkaban-db/create-all-sql-0.1.0-SNAPSHOT.sql;
5.4.2 安装Executor Server
5.4.2.1 解压压缩包
tar zxvf /opt/software/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C /opt/install/azkaban/
#修改文件夹名称
cd /opt/install/azkaban/
mv azkaban-exec-server-0.1.0-SNAPSHOT/ azkaban-exec
5.4.2.2 修改配置
cd azkaban-exec/
# 配置mysql信息
vi conf/azkaban.properties
---------------------------------
mysql.port=3306
mysql.host=singleNode
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
---------------------------------
5.4.2.3 启动 AzkabanExecutorServer服务
bin/start-exec.sh
5.4.2.4 查看进程
[root@singleNode azkaban-exec]# jps
3221 RunJar
443678 AzkabanExecutorServer
5.4.2.5 激活executor
curl -G "localhost:$(<./executor.port)/executor?action=activate" && echo
-------------------------------------------------------------------------
{"status":"success"}
5.5 安装Web Server
5.5.1 解压压缩包
tar -zxvf /opt/software/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C /opt/install/azkaban/
#修改文件夹名称
cd /opt/install/azkaban/
mv azkaban-web-server-0.1.0-SNAPSHOT/ azkaban-web
5.5.2 修改配置
cd azkaban-web/
# 配置mysql信息
vim conf/azkaban.properties
---------------------------------
mysql.port=3306
mysql.host=singleNode
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
---------------------------------
# 配置用户信息
vim conf/azkaban-users.xml
---------------------------------
<azkaban-users>
<user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
<user password="metrics" roles="metrics" username="metrics"/>
<user password="admin" roles="admin" username="admin"/>
<role name="admin" permissions="ADMIN"/>
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
---------------------------------
5.5.3 启动
bin/start-web.sh
5.5.4 查看进程
[root@singleNode azkaban-web]# jps
2514 RunJar
444293 AzkabanWebServer
443678 AzkabanExecutorServer
444331 Jps