Azkzban是一款轻量级的调度工具,提供了一个良好的Web操作界面;
首先它不是apache项目,但属于开源项目,官网地址 :https://azkaban.github.io/
两种部署模式:无论哪一种部署模式都会包含所有的特性
solo-server mode :单机模式,内置了H2数据库,web和executor服务运行在一个进程上,可用于测试,本次测试部署的是单机模式。
multiple-executor mode:集群模式,DB使用的是有主备的mysql,升级维护不影响使用,用于生产
安装包:azkaban-3.57.0.tar.gz
下载地址:https://github.com/azkaban/azkaban/releases/tag/3.57.0
需要有jdk1.8、gradle、git环境,gradle类似于maven
下载gradle: https://gradle.org/releases/,我这里下载的是4.6版本
下载完成后,上传到software目录下,并解压azkaban-3.57.0.tar.gz
到source目录
[hadoop@vm01 software]$ pwd
/home/hadoop/software
[hadoop@vm01 software]$ ll
...
-rw-r--r--. 1 hadoop hadoop 19048383 Aug 22 19:38 azkaban-3.57.0.tar.gz
-rw-r--r--. 1 hadoop hadoop 106724289 Aug 22 19:39 gradle-4.6-all.zip
[hadoop@vm01 software]$ tar -zxvf azkaban-3.57.0.tar.gz -C ../source
将gradle-4.6-all.zip
包拷贝到azkaban-3.57.0/gradle/wrapper/
目录下
[hadoop@vm01 software]$ cp gradle-4.6-all.zip ../source/azkaban-3.57.0/gradle/wrapper
[hadoop@vm01 software]$ cd ../source/azkaban-3.57.0/gradle/wrapper
[hadoop@vm01 wrapper]$ ll
total 104284
-rw-r--r--. 1 hadoop hadoop 106724289 May 2 19:49 gradle-4.6-all.zip
-rw-rw-r--. 1 hadoop hadoop 54708 Sep 5 2018 gradle-wrapper.jar
-rw-rw-r--. 1 hadoop hadoop 736 May 2 19:47 gradle-wrapper.properties
修改配置
[hadoop@vm01 wrapper]$ vi gradle-wrapper.properties
#修改该选项
distributionUrl=gradle-4.6-all.zip
安装git
注意这里是root用户
[root@hadoop001 ~]$ yum install git
[root@hadoop001 ~]# git --version
git version 1.8.3.1
开始漫长的编译。
如果中间因为网络原因出现jar包下载失败,编译会退出,但是没关系,再次重新编译即可,之前下载的jar包会缓存在本地,不会再次下载的。本人中间重编译了3次才成功的。
[hadoop@vm01 ~]# cd /home/hadoop/source/azkaban-3.57.0
[hadoop@vm01 azkaban-3.57.0]# ./gradlew build installDist -x test
编译成功后,会在azkaban-solo-server/build/distributions/
路径下生成对应的包,有两个都可以,我们选择tar包解压安装
[hadoop@vm01 azkaban-3.57.0]$ cd azkaban-solo-server/build/distributions/
[hadoop@hadoop001 distributions]$ ll
total 46752
-rw-rw-r--. 1 hadoop hadoop 23870855 May 2 20:10 azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz
-rw-rw-r--. 1 hadoop hadoop 24001502 May 2 20:10 azkaban-solo-server-0.1.0-SNAPSHOT.zip
[hadoop@hadoop001 distributions]$ tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C ~/app
修改配置文件
[hadoop@vm01 conf]$ pwd
/home/hadoop/app/azkaban-solo-server-0.1.0-SNAPSHOT/conf
[hadoop@vm01 conf]$ vi azkaban.properties
#修改这两个选项
azkaban.name=RUOZEDATA
azkaban.label=Ruozedata Azkaban
[hadoop@vm01 conf]$ vi azkaban-users.xml
#添加该行,web登陆Azkaban的用户和密码
<user password="000000" roles="admin" username="ruozedata" />
启动Azkaban
[hadoop@vm01 azkaban-solo-server-0.1.0-SNAPSHOT]$ bin/start-solo.sh
[hadoop@vm01 azkaban-solo-server-0.1.0-SNAPSHOT]$ jps
19345 AzkabanSingleServer #进程
#关闭
[hadoop@vm01 azkaban-solo-server-0.1.0-SNAPSHOT]$ bin/shutdown-solo.sh
创建一个first目录,下面存放两个两个文件,也是Azkaban需要的两个文件:basic.flow
和flow20.project
flow20.project的文件内容:
azkaban-flow-version: 2.0
basic.flow的文件内容:
name:作业名
type:命令类型,比如comand
commond:这里输出了一句话This is an echoed text
nodes:
- name: jobA
type: command
config:
command: echo "This is an echoed text."
创建项目,名字:ruozedata-azkaban-helloworld
上传zip包,左边能看到你的base信息,jobA表示成功
然后Excutor Flow执行
后面的一些运行log日志,自己去点一点,看一看,这里不演示了。
老样子,新建一个dependency目录,下面两个文件,主要编辑basic.flow文件
basic.flow文件内容:
nodes:
- name: jobC
type: noop
# jobC depends on jobA and jobB
dependsOn:
- jobA
- jobB
- name: jobA
type: command
config:
command: echo "This is an A text."
- name: jobB
type: command
config:
command: echo "This is an B text."
然后把dependency打成zip包,上传到Azkaban,执行
新建项目,ruozedata-azkanban-dependency
上传zip包,看到左边的JobA/B/C信息,然后点击Excutor Flow执行