Azkaban-solo-server环境搭建

::: hljs-center # Azkaban-solo-server环境搭建 ::: 在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 应采用主从模式进行备份和容错。该模式是最严格的生产环境。 >i # 一、前置准备 Azkaban 编译依赖 JDK 1.8+ ,需要预先安装,安装步骤见: - jdk的安装 - Gradle安装与配置 - Azkaban 的编译过程需要用 Git 下载部分 JAR 包,所以需要预先安装 Git >i # 二、源码编译 ## 2.1 下载并解压 Azkaban 在 3.0 版本之后就不提供对应的安装包,需要自己下载源码进行编译。 下载 Azkaban 源码,这里我下载的是[azkaban-3.81.0.tar.gz](https://github.com/azkaban/azkaban/archive/refs/tags/3.81.0.tar.gz),下载地址:[https://github.com/azkaban/azkaban/releases](https://github.com/azkaban/azkaban/releases) ```shell [liulike@hadoop ~]$ tar -zxvf azkaban-3.81.0.tar.gz -C /opt/azkaban/ ``` ## 2.2 源码编译 Azkaban-3.81.0 编译需要依赖 gradle-4.6-all.zip , 这里需要注意的是不同版本的 Azkaban 依赖 Gradle 版本不同,可以在解压后的 gradle/wrapper/gradle-wrapper.properties 文件查看 ![image.png](https://cos.easydoc.net/52087651/files/l6by1rgn.png) 在编译时程序会自动去图中所示的地址进行下载,但是下载速度很慢。为避免影响编译过程,建议先手动下载至 gradle/wrapper/ 目录下, 然后修改配置文件 gradle-wrapper.properties 中的 distributionUrl 属性,指明使用本地的 gradle。 ```shell cp gradle-4.6-all.zip /opt/azkaban/azkaban-3.81.0/gradle/wrapper/ vi /opt/azkaban/azkaban-3.81.0/gradle/wrapper/gradle-wrapper.properties ``` ![image.png](https://cos.easydoc.net/52087651/files/l6by6r0e.png) 在安装目录下执行编译命令,编译成功后会有BUILD SUCCESSFUL提示 [liulike@hadoop azkaban-3.81.0]$ ./gradlew distTar 编译过程中需要注意以下问题: - 因为编译的过程需要下载大量的 Jar 包,下载速度根据网络情况而定,通常都不会很快,如果网络不好,耗费半个小时或一个小时都是很正常的; - 编译过程中如果出现网络问题而导致 JAR 无法下载,编译可能会被强行终止,这时候重复执行编译命令即可,gradle 会把已经下载的 JAR 缓存到本地,所以不用担心会重复下载 JAR 包。 可能出现的错误: ![image.png](https://cos.easydoc.net/52087651/files/l6byd0zw.png) 安装git即可 经过多次失败之后,最终编译成功,建议多尝试,只要软件安装了的应该是没问题的: ![image.png](https://cos.easydoc.net/52087651/files/l6fr2ah5.png) >i # 三、Solo Server 模式部署 ## 3.1 解压 编译后在安装目录的 azkaban-solo-server/build/distributions 目录下可以找到Solo Server 模式安装包,进行解压即可: [liulike@hadoop distributions]$ tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C /opt/azkaban/ ## 3.2 修改时区 因为 Azkaban 默认采用的时区是 America/Los_Angeles,如果你的调度任务中有定时任务的话,就需要进行相应的更改,这里改为常用的 Asia/Shanghai 。进入conf目录,修改azkaban.properties: ```shell vi /opt/azkaban/azkaban-solo/conf/azkaban.properties ``` ![image.png](https://cos.easydoc.net/52087651/files/l6fr2ah5.png) ## 3.3 启动 执行启动命令,需要注意的是一定要在根目录下执行,不能进入 bin 目录下执行,不然会抛出 Cannot find 'database.properties' 异常。 [liulike@hadoop azkaban-solo-server]$ bin/start-solo.sh ## 3.4 验证 验证方式一:使用 jps 命令查看是否有 AzkabanSingleServer 进程: ![image.png](https://cos.easydoc.net/52087651/files/l6fr4b2x.png) 验证方式二:访问 8081 端口,查看 Web UI 界面,默认的登录名密码都是 azkaban,如果需要修改或新增用户,可以在 conf/azkaban-users.xml 文件中进行配置: ![image.png](https://cos.easydoc.net/52087651/files/l6c7wenh.png) >i # 四、基本任务调度 ## 4.1 新建项目 在 Azkaban 主界面创建一个新项目: ![image.png](https://cos.easydoc.net/52087651/files/l6c7wwor.png) ## 4.2 任务配置 新建任务配置文件 liulike.job,内容如下。这里的任务很简单,就是输出一句 'Hello Azkaban: #command.job type=command command=echo 'Hello Azkaban' > 这里直接输出中文会乱码 ## 4.3 打包上传 将 liulike.job 打包为 zip 压缩文件: ![image.png](https://cos.easydoc.net/52087651/files/l6fr99au.png) 在Web UI创建一个项目: ![image.png](https://cos.easydoc.net/52087651/files/l6frloi4.png) 通过 Web UI 界面上传: ![image.png](https://cos.easydoc.net/52087651/files/l6frdbqq.png) 上传成功后可以看到对应的 Flows: ![image.png](https://cos.easydoc.net/52087651/files/l6frdzju.png) ## 4.4 执行任务 点击页面上的 `Execute Flow` ,进入如下界面后点击 `Execute` 执行任务: ![image.png](https://cos.easydoc.net/52087651/files/l6frh0jy.png) ## 4.5 执行结果 点击 Log 可以查看到任务的执行日志: ![image.png](https://cos.easydoc.net/52087651/files/l6frfw89.png) ![image.png](https://cos.easydoc.net/52087651/files/l6frg7w6.png)