azkaban入坑指南

azkaban

azkaban是一个分布式调度框架,由java语言编写,可以支持工作流的调度以及提供了可视化webUI管理.

但是只是原版的azkaban提供的功能还是比较单一的,在数据平台的应用中,需要任务分类、任务优先级、任务血缘图等功能,所以要对azkaban进行二次开发。

二次开发前,首先是本地运行、熟悉项目。

从github上的master分支拉代码到本地,地址为azkaban

1.构建代码

azkaban使用gradle进行构建项目,如果没有安装过gradle,建议先从官网下载对应的版本,不要使用idea或者azkaban默认的下载模式去下载(因为下载非常非常慢,还总是中断)这里是gradle的下载地址gradle。很重要的一点,gradle居然没有版本向下兼容,如果下载了高版本,可能会导致azkaban构建失败,所以在代码中,azkaban说明了构建项目使用的gradle版本,位置如下图所示
在这里插入图片描述
被我注释掉的哪一行是原本的代码,默认方式是自行去下载,如果已经下好了,将zip包放到warpper路径下,然后更改distributionUrl。应该有一种方式可以指定自己本地的gradle去build,我现在还没有找到。
gradle设置完成后,在项目根目录下执行./gradlew build -x test命令构建项目,构建完成后在module目录下会出现Build后的文件,其中有一个azkaban.css的css文件在git拉下来的代码中是没有的,需要拷贝出来放到web的css目录下。
在这里插入图片描述

2.建表

构建完代码后,在azkaban-db这个module中,有azkaban要用到的所有数据库表的建表语句,复制一下在自己的数据库中把表建好。

3.修改默认配置文件

要更改默认的配置文件为azkaban.properties,在exec-server和web-server下的resource目录各有一个(其实这两个里的内容是一摸一样的。。)
主要更改内容为
1.mysql.xxx的配置,改为自己的数据库配置。
2.修改配置文件中的executor.global.properties和user.manager.xml.file这两项的路径改为绝对路径,不然启动的时候会报找不到目录的异常。
3.web.resource.dir配置,改为web目录的绝对路径,否则页面的js和css会无法正确加载

4.启动

azkaban架构分为web-server和exec-server。启动顺序为先启动exec再启动web,否则会报No active executors found的异常信息。在本地启动时也有很多要注意的地方,首先要指定log4j的配置文件地址,在VM的启动参数中添加-Dlog4j.configuration=xxx -Dlog4j.log.dir=xxx。再添加conf的java环境变量,
-conf xxx(xxx为azkaban.properties所在的目录地址)设置完成后,应如下图所示。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lvqinglou/article/details/95060608