在azkaban3.0 以后的版本,提供了3种部署模式,这三种模式的区别如下:


  • solo-server mode(单服务模式): 元数据默认存放在内置的 H2 数据库,该模式中 ​​webServer​​​(管理服务器) 和 ​​executorServer​​​(执行服务器) 运行在同一个进程中,进程名是 ​​AzkabanSingleServer​​ 。该模式适用于小规模工作流的调度,适合用于尝试和了解azkaban的功能。
  • two server mode(双进程服务模式 ):存放元数据的数据库为 MySQL,MySQL 应采用主从模式进行备份和容错。这种模式下 ​​webServer​​​ 和 ​​executorServer​​ 在不同进程中运行( 同一服务器 )。该模式适合生产环境,更新和升级时对用户的影响较小。
  • multiple-executor mode(分布式多服务模式): 1个webServer,多个execServer分布在不同节点上, 存放元数据的数据库为 MySQL,MySQL 应采用主从模式进行备份和容错。该模式是最严格的生产环境。

一、前置准备

Azkaban 编译依赖 JDK 1.8+ ,需要预先安装,安装步骤见:


  • Linux下jdk的安装
  • Gradle安装与配置-视频教程
  • Azkaban 的编译过程需要用 Git 下载部分 JAR 包,所以需要预先安装 Git

二、源码编译

2.1 下载并解压

Azkaban 在 3.0 版本之后就不提供对应的安装包,需要自己下载源码进行编译。

下载 Azkaban 源码,这里我下载的是最新的​​azkaban-3.84.4.tar.gz​​​​

[xiaokang@hadoop ~]$ tar -zxvf azkaban-3.84.4.tar.gz -C /opt/software/

2.2 源码编译

Azkaban-3.84.4 编译需要依赖 ​​gradle-4.6-all.zip​​​ , 这里需要注意的是不同版本的 Azkaban 依赖 Gradle 版本不同,可以在解压后的 ​​gradle/wrapper/gradle-wrapper.properties​​ 文件查看

在编译时程序会自动去图中所示的地址进行下载,但是下载速度很慢。为避免影响编译过程,建议先手动下载至 ​​gradle/wrapper/​​​ 目录下, 然后修改配置文件 ​​gradle-wrapper.properties​​​ 中的 ​​distributionUrl​​ 属性,指明使用本地的 gradle。

[xiaokang@hadoop ~]$ cp gradle-4.6-all.zip /opt/software/azkaban-3.84.4/gradle/wrapper/
[xiaokang@hadoop ~]$ vim /opt/software/azkaban-3.84.4/gradle/wrapper/gradle-wrapper.properties

在安装目录下执行编译命令,编译成功后会有​​BUILD SUCCESSFUL​​提示

[xiaokang@hadoop azkaban-3.84.4]$ ./gradlew distTar

编译过程中需要注意以下问题:


  • 因为编译的过程需要下载大量的 Jar 包,下载速度根据网络情况而定,通常都不会很快,如果网络不好,耗费半个小时或一个小时都是很正常的;
  • 编译过程中如果出现网络问题而导致 JAR 无法下载,编译可能会被强行终止,这时候重复执行编译命令即可,gradle 会把已经下载的 JAR 缓存到本地,所以不用担心会重复下载 JAR 包。

经过多次失败之后,最终编译成功:

Azkaban-solo-server环境搭建_hadoop

考虑到大家可能编译的时间会很长

三、Solo Server 模式部署

3.1 解压

编译后在安装目录的 ​​azkaban-solo-server/build/distributions​​ 目录下可以找到Solo Server 模式安装包,进行解压即可:

[xiaokang@hadoop distributions]$ tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C /opt/software/

3.2 修改时区

因为 Azkaban 默认采用的时区是 ​​America/Los_Angeles​​​,如果你的调度任务中有定时任务的话,就需要进行相应的更改,这里改为常用的 ​​Asia/Shanghai​​​ 。进入​​conf​​​目录,修改​​azkaban.properties​​:

[xiaokang@hadoop ~]$ vim /opt/software/azkaban-solo-server/conf/azkaban.properties

3.3 启动

执行启动命令,需要注意的是一定要在根目录下执行,不能进入 ​​bin​​​ 目录下执行,不然会抛出 ​​Cannot find 'database.properties'​​ 异常。

[xiaokang@hadoop azkaban-solo-server]$ bin/start-solo.sh

3.4 验证

验证方式一:使用 ​​jps​​​ 命令查看是否有 ​​AzkabanSingleServer​​ 进程:

验证方式二:访问 8081 端口,查看 Web UI 界面,默认的登录名都是 ​​azkaban​​​,如果需要修改或新增用户,可以在 ​​conf/azkaban-users.xml​​ 文件中进行配置:

四、基本任务调度

4.1 新建项目

在 Azkaban 主界面创建一个新项目:

4.2 任务配置

新建任务配置文件 ​​xiaokang.job​​​,内容如下​ :

#command.job
type=command
command=echo 'Hello Azkaban,Flow-1.0! xk1181259634'

4.3 打包上传

将 ​​xiaokang.job​​​ 打包为 ​​zip​​ 压缩文件

通过 Web UI 界面上传

上传成功后可以看到对应的 Flows

4.4 执行任务

点击页面上的 ​​Execute Flow​​ 执行任务

4.5 执行结果

点击 ​​Log​​ 可以查看到任务的执行日志