大数据——任务调度器Azkaban介绍及安装

一、什么是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特点

  1. 兼容任何版本的Hadoop
  2. 易于使用的web用户界面
  3. 简单的 web 和 http 工作流上传
  4. 项目工作区
  5. 工作流调度
  6. 模块化和可插拔的插件机制
  7. 认证和授权
  8. 跟踪用户操作
  9. 关于失败和成功的电子邮件警报
  10. SLA告警和自动查杀
  11. 重试失败的作业

三、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

5.5.5 访问Web UI

image-20210811102452351


版权声明:本文为sweet19920711原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。