官网地址:https://azkaban.readthedocs.io
Azkaban 有三种部署方式:单服务模式、2个服务模式、分布式多服务模式
简单实用仅需单服务模式即可
2个服务模式,需要配置mysql, Azkaban使用MySQL来存储项目和执行
它具有如下功能特点:
1、Web用户界面
2、方便上传工作流
3、方便设置任务之间的关系
4、工作流调度
5、认证/授权
6、能够杀死并重启工作流
7、模块化和可插拔的插件机制
8、项目工作区
9、工作流和任务的日志记录和审计
一、下载编译软件 gradle
下载解压
$ wget http://services.gradle.org/distributions/gradle-5.4.1-bin.zip
$ unzip gradle-5.4.1-bin.zip -d /opt/
$ cd /opt/gradle-5.4.1/
添加到环境变量
$ export GRADLE_HOME=/opt/gradle-5.4.1
$ export PATH=$GRADLE_HOME/bin:$PATH
验证是否安装成功
$ gradle -v
------------------------------------------------------------
Gradle 5.4.1
------------------------------------------------------------
Build time: 2019-04-26 08:14:42 UTC
Revision: 261d171646b36a6a28d5a19a69676cd098a4c19d
Kotlin: 1.3.21
Groovy: 2.5.4
Ant: Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM: 1.8.0_211 (Oracle Corporation 25.211-b12)
OS: Linux 3.10.0-957.21.2.el7.x86_64 amd64
二、下载Azkaban源码编译包,并编译
下载解压
$ wget https://github.com/azkaban/azkaban/archive/3.57.0.tar.gz
$ tar -xzvf 3.57.0.tar.gz -C /opt/
编译
$ cd /opt/azkaban-3.57.0/
$ ./gradlew build -x test
BUILD SUCCESSFUL in 32m 7s
73 actionable tasks: 73 executed
编译成功后包存在的位置
$ pwd
/home/hadoop/softwares/azkaban-3.57.0/azkaban-solo-server/build/distributions
解压
$ tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C ~/apps/
修改配置文件
azkaban.properties
# Azkaban Personalization Settings
azkaban.name=xiaoming
azkaban.label=xiaoming Azkaban
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>
启动
$ pwd
/home/hadoop/apps/azkaban-solo-server-0.1.0-SNAPSHOT/
$ ./bin/start-solo.sh
$ jps
4032 AzkabanSingleServer
#查看启动日志
$ pwd
/home/hadoop/apps/azkaban-solo-server-0.1.0-SNAPSHOT/bin/local
$ less azkaban-webserver.log
+0800 INFO [AzkabanWebServer] [Azkaban] Starting Azkaban Server
+0800 INFO [AzkabanServer] [Azkaban] Loading azkaban settings file from ./internal/../../conf
+0800 INFO [AzkabanServer] [Azkaban] Loading azkaban properties file
+0800 INFO [AzkabanDatabaseUpdater] [Azkaban] Use scripting directory sql
+0800 INFO [AzkabanDatabaseUpdater] [Azkaban] Will auto update any changes.
+0800 INFO [DataSourceUtils] [Azkaban] h2 DB path: /home/hadoop/apps/azkaban-solo-server-0.1.0-SNAPSHOT/bin/./h2
注意: 安装完成之后,一定要在bin文件的上一层目录进行启动
./bin/start-web.sh
而不能cd到bin目录里面进行启动,因为该启动脚本中引用到了当前位置目录信息
三、使用Azkaban
WebUI界面登录 http://hadoop000:8081
登录

创建项目: 点击右上角的create project按钮创建

创建后可进行权限分配

Job上传
只支持zip压缩 
创建job
flow20.project
azkaban-flow-version: 2.0
basic.flow
nodes:
- name: jobA
type: command
config:
command: echo "This is an echoed text."
将 flow20.project和basic.flow放一起,压缩成Archive.zip ,然后上传
basic1.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 echoed text."
- name: jobB
type: command
config:
command: pwd
将 flow20.project和basic2.flow放一起,压缩成Archive2.zip ,然后上传
需要关注的点: 




四、编写mr-etl调度
flow20.project
azkaban-flow-version: 2.0
mr-etl.flow
nodes:
- name: jobA
type: command
config:
command: "/home/hadoop/apps/hadoop-2.6.0-cdh5.7.0/bin/hadoop jar /home/hadoop/apps/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount hdfs://hadoop000:8020/input/wc/hello.txt hdfs://hadoop000:8020/azkaban/mr/output/wcs"
注意分隔符
查看执行结果: