一.简介
Azkaban2.5支持两种运行模式:
1.solo server mode:web 和 executor在同一个进程中执行,适用于H2 DB。
2.two server mode: web 和 executor在不同的进程中执行(运行在同一服务器上)数据库为mysql。
但是以上两种情况都不适用于分布式部署,1个web对应多executors。这个情况在3.0以上得以修复。
Azkaban3.0在原有的两种基础上加入新的运行模式:
multiple executor mode:web和executor可以运行在不同的服务器上,DB使用mysql。
二.环境配置
由于azkaban3.0以上没有相应的安装包,需要从源码进行编译。编译的环境需要安装jdk8。
项目是gradle项目。
三.编译,安装过程
1.git clone [email protected]:azkaban/azkaban.git。 azkaban源码,当前为3.24版本
2.进入azkaban 项目进行编译 ./gradlew distTar
编译结果为:
azkaban-common : 常用工具类。
azkaban-db : 对应的sql脚本
azkaban-hadoop-secutity-plugin : hadoop 有关kerberos插件
azkaban-solo-server: web和executor 一起的项目。
azkaban-web/executor-server:azkaban的 web和executor的server信息
azkaban-spi: azkaban存储接口以及exception类
3.在数据库中执行azkaban-db下的sql :
在数据库中创建所有表 create-all. 执行结束后,再执行源码下的upgrade.3.20 to 3.22.sql
4.在编译成功后 azkaban-exec/web-server下目录获取tar文件
5.解压 azkaban-exec azkaban-web azkaban-solo
将solo下的conf拷贝至azkaban-exec下, azkaban-web下 删除global.properties即可。
将solo下的plugins拷贝至azkaban-exec下,否则会在执行工作流时出现以下错误:
这是由于azkaban需要校验提交的用户信息,将plugins/jobtypes/commonprivate.properties中把这个校验关闭了
6.在azkaban-exec 和 azkaban-web下创建logs文件夹,并将mysql-connect jar复制到lib文件夹下。
7.多个executor只需要配置链接到同一个数据库就可以了。executor会自动查询executor这张表中,但是默认active为0,需要手动修改 active为1.azkaban-web在启动时才会注册这些executor。注意,添加了executor需要重启web.
8.executor配置文件修改 /azkaban-web/conf/azkaban.properties:下添加:
#Multiple Executor Mode
#open it if you use the multiple executor mode
azkaban.use.multiple.executors=true
#azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus
azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
azkaban.executorselector.comparator.Memory=1
azkaban.executorselector.comparator.LastDispatched=1
azkaban.executorselector.comparator.CpuUsage=1
将azkaban的mode设置成多executor。其中第二层是过滤一些executor分配条件。
9.将log4j文件拷贝至azkaban-exec 和 azkaban-web下否则会在启动时出现
Exception: java.lang.StackOverflowError thrown from the UncaughtExceptionHandler in thread "main"
10.至此 按照azkaban web的jetty keystore配置后就可使用了。。。PS.先启动executor再启动web.