一、Azkaban概述
1.1 什么是Azkaban
Azkaban是由Linkedin公司推出的一个批量工作流任务调度器, 主要用于在一个工作流内以一个特定的顺序运行一组工作和流程, 它的配置是通过简单的key:****value****对的方式,通过配置中的 Dependencies来设置依赖关系。 Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的 web用户界面维护和跟踪你的工作流。
由于Azkaban具有轻量可插拔、友好的WebUI、SLA告警、完善的权限控制、易于二次开发等优点,也得到了广泛应用。
1.2 Azkaban功能和特点:
-
兼容任何版本的hadoop
-
易于使用的Web 用户界面
-
简单的工作流的上传
-
方便设置任务之间的关系
-
调度工作流
-
模块化和可插拔的插件机制
-
认证/授权(权限的工作)
-
能够杀死并重新启动工作流
-
有关失败和成功的电子邮件提醒
1.3 常见工作流调度系统
1)简单的任务调度:直接使用crontab 实现;
2)复杂的任务调度:开发调度平台或使用现成的开源调度系统,比如ooize、azkaban 等
1.4 Azkaban框架
Azkaban 由三个关键组件构成:
1) AzkabanWebServer AzkabanWebServer是整个 Azkaban工作流系统的主要管理者,
它用户登录认证、 负责 project管理、 定时执行工作流、跟踪工作流执行进度等一系列任务。
2) AzkabanExecutorServer 负责具体的工作流的提交、执行,它们通过 mysql数据库来协调任务的执行。
3) 关系型数据库( MySQL 存储大部分 执行流 状态, AzkabanWebServer和
AzkabanExecutorServer都需要访问数据库。
1.5 Azkaban下载地址
https://azkaban.github.io/downloads.html
二、Azkaban安装部署(最新版3.9.1)
2.1编译Azkaban
注:官方没有提供安装包,需自行编译且编译环境必须安装Git、Jdk1.8+
-
#拉取源码到本地 [root@anker-db01 anker]# git clone https://github.com/azkaban/azkaban.git Cloning into 'azkaban'... remote: Enumerating objects: 12, done. remote: Counting objects: 100% (12/12), done. remote: Compressing objects: 100% (12/12), done. remote: Total 38954 (delta 1), reused 0 (delta 0), pack-reused 38942 Receiving objects: 100% (38954/38954), 50.25 MiB | 372.00 KiB/s, done. Resolving deltas: 100% (21564/21564), done. [root@anker-db01 anker]# ll total 4 drwxr-xr-x 25 root root 4096 Jun 9 16:47 azkaban [root@anker-db01 anker]# cd azkaban/ #执行打包命令 [root@anker-db01 azkaban]# ./gradlew build -x test Starting a Gradle Daemon (subsequent builds will be faster) Parallel execution with configuration on demand is an incubating feature. .............省略中间内容............... BUILD SUCCESSFUL in 4m 29s 76 actionable tasks: 71 executed, 5 from cache ##打好的包在如下路径(有tar.gz、zip包) [root@anker-db01 azkaban]# ll azkaban-web-server/build/distributions/ total 39772 -rw-r--r-- 1 root root 20297479 Jun 9 16:59 azkaban-web-server-3.91.0-1-g6126379.tar.gz -rw-r--r-- 1 root root 20425853 Jun 9 16:59 azkaban-web-server-3.91.0-1-g6126379.zip [root@anker-db01 azkaban]# ll azkaban-exec-server/build/distributions/ total 31728 -rw-r--r-- 1 root root 16238594 Jun 9 16:59 azkaban-exec-server-3.91.0-1-g6126379.tar.gz -rw-r--r-- 1 root root 16245079 Jun 9 16:59 azkaban-exec-server-3.91.0-1-g6126379.zip [root@anker-db01 azkaban]# ll azkaban-db/build/distributions/ total 28 -rw-r--r-- 1 root root 6445 Jun 9 16:56 azkaban-db-3.91.0-1-g6126379.tar.gz -rw-r--r-- 1 root root 17021 Jun 9 16:56 azkaban-db-3.91.0-1-g6126379.zip
2.2 安装部署Azkaban
2.2.1 解压并重命名
#将打好的包解压到 /usr/local/azkaban 目录下并重命名 web和executor
[root@anker-db01 distributions]# tar -xvf azkaban-web-server-3.91.0-1-g6126379.tar.gz -C /usr/local/azkaban/
[root@anker-db01 distributions]# tar -xvf azkaban-exec-server-3.91.0-1-g6126379.tar.gz -C /usr/local/azkaban/
[root@anker-db01 distributions]# tar -xvf azkaban-db-3.91.0-1-g6126379.tar.gz -C /usr/local/azkaban/
[root@anker-db01 azkaban]# mv azkaban-web-server-3.91.0-1-g6126379 server
[root@anker-db01 azkaban]# mv azkaban-exec-server-3.91.0-1-g6126379 executor
[root@anker-db01 azkaban]# tree -L 2
.
├── executor
│ ├── bin #启动脚本
│ ├── conf #配置文件
│ ├── lib #依赖的jar包
│ └── plugins #插件目录
└── server
├── bin
├── conf
├── lib
└── web #web页面目录
10 directories, 0 files
2.2.2Mysql 建库导表及用户创建赋权
mysql> create database azkaban charset=utf8;
Query OK, 1 row affected (0.04 sec)
mysql> use azkaban