azkaban轻量级工作流调度系统,由多个组件组成,其中最基础有三部分,分别为db、web-server、exec-server。web-server提供了可视化的界面管理,作业配置;exec-server则是来执行具体的作业,该组件可配置集群。
Azkaban三种部署模式,
solo-server模式【单机】
two-server模式【2执行器】
分布式multiple-executor模式【分布式】
博主已经提供好了编译好的压缩包直接下载使用即可
此处提供 已经编译好的 Azkaban 所有的应用包,包括Mysql 5.7,JDK1.8
链接:https://pan.baidu.com/s/1s43YGXoa4cMFMkiIpCFrHw
提取码:nph6
如需自己编译,请按照如下步骤 ↓↓↓↓↓↓↓↓↓↓↓↓↓
---------------------------------------------------------------------------------------------------
第一步:需要下载源码,进行编译
1、下载源码
从github上下载azkaban官方源码,目前最新release为3.73.1
git clone git@github.com:azkaban/azkaban.git
git 拉取之后会发现,会自动创建一个azkaban文件夹,所有的编译工作 都进入azkaban文件夾下
2、编译
切换到 azkaban下面的目录
cd azkaban
然后依次执行如下命令:
./gradlew installDist
./gradlew test
./gradlew build -x test
./gradlew build
./gradlew clean
./gradlew installDist
./gradlew test
./gradlew distTar
每一个运行完毕会显示 BUILD SUCCESSFUL in 时间
bulid成功之后
编译好的文件分别在自 azkaban文件夹下面,
Azkaban需要用的数据库
/azkaban/azkaban-db/build/distributions/azkaban-db-3.73.1.tar.gz
Azkaban 需要的执行服务
/azkaban/azkaban-exec-server/build/distributions/azkaban-exec-server-3.73.1.tar.gz
Azkaban需要执行的web服务
/azkaban/azkaban-web-server/build/distributions/azkaban-web-server-3.73.1.tar.gz
Azkaban需要执行的单节点服务压缩包
/azkaban/azkaban-solo-server/build/distributions/azkaban-solo-server-3.73.1.tar.gz
____________________________________________________________________________________________________
Azkaban的分布式安装:
第①步:保证JDK和MySql服务皆可用
MySql 5.7 安装请见 :https://blog.csdn.net/weixin_38822045/article/details/91447250
分配分布式 ,组件的安装的分配
服务器 | 服务分配 |
---|---|
192.168.1.129 | mysql、azkaban-web-server、 azkaban-exec-server |
192.168.1.130 | azkaban-exec-server |
192.168.1.131 | azkaban-exec-server |
第②步:先配置192.168.1.212的Mysql,取出db压缩包中的 create-all-sql-3.73.1.sql文件
创建 Mysql的Azkaban的数据库
mysql -u root -p
mysql> create database azkaban character set utf8;
mysql> use azkaban;
#创建用户
mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
#给用户授权
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
mysql>
;#创建表
运行: source create-all-sql-3.73.1.sql
第③步:解压压缩文件
tar -zxvf azkaban-web-server-3.73.1.tar.gz
tar -zxvf azkaban-exec-server-3.73.1.tar.gz
第④步:生成SSL
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
注:密码和最后确认需要输入,其他默认即可。需要输入y,以上配置完成之后会在当前目录生成一个keystore文件;记住位置,后续要用。
将生成 keystore 拷贝到 /azkaban-web-server-3.73.1/bin/ 的目录下面
第⑤步:编辑azkaban-web‐server-3.73.1配置文件
编辑azkaban-web-server-3.73.1配置文件:vi /mnt/azkaban-web-server-3.73.1/conf/azkaban.properties
完整可用的配置文件:如下
# Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=web/
default.timezone.id=Asia/Shanghai
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=/mnt/azkaban-web-server-3.73.1/conf/azkaban-users.xml
# Loader for projects
executor.global.properties=/mnt/azkaban-web-server-3.73.1/conf/global.properties
azkaban.project.dir=projects
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.use.ssl=false
jetty.maxThreads=25
jetty.port=8081
# Where the Azkaban web server is located
azkaban.webserver.url=http://192.168.1.212:8081
# mail settings
mail.sender=
mail.host=
azkaban.jobtype.plugin.dir=/mnt/azkaban-web-server-3.73.1/plugins/jobtypes
# User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.
# enduser -> myazkabanhost:443 -> proxy -> localhost:8081
# when this parameters set then these parameters are used to generate email links.
# if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
# azkaban.webserver.external_hostname=myazkabanhost.com
# azkaban.webserver.external_ssl_port=443
# azkaban.webserver.external_port=8081
job.failure.email=
job.success.email=
lockdown.create.projects=false
cache.directory=cache
# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
# Azkaban plugin settings
# Azkaban mysql settings by default. Users should configure their own username and password.
database.type=mysql
mysql.port=3306
mysql.host=192.168.1.212
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.flow.threads=30
executor.port=12321
jetty.keystore=keystore
jetty.password=server123
jetty.keypassword=server123
jetty.truststore=keystore
jetty.trustpassword=server123
#Multiple Executor
azkaban.use.multiple.executors=true
#azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus
azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus
# 过滤器会检查 executor 主机空余内存是否会大于 6G,如果不足 6G,则 web-server 不会将任务交由该主机执行
#azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
azkaban.executorselector.comparator.Memory=1
azkaban.executorselector.comparator.LastDispatched=1
azkaban.executorselector.comparator.CpuUsage=1
第⑥步:至此Azkaban的web-server配置文件修改成功
将上述azkaban-web-server配置文件拷贝到Azkaban-exec-server中替换azkaban.properties配置【web和exec 配置文件可相同】
接下来在/azkaban-web-server-3.73.1文件夹下创建 /plugins/jobtypes
同时将/azkaban-exec-server-3.73.1/plugins/jobtypes/commonprivate.properties
拷贝到 /azkaban-web-server-3.73.1/plugins/jobtypes文件下面
将配置commonprivate.properties 添加一行配置
azkaban.native.lib=false
此时commonprivate.properties 中有两条记录:
execute.as.user=false azkaban.native.lib=false
将次配置文件授权 chmod 755 commonprivate.properties
替换掉azkaban-web-server-3.73.1/plugins/jobtypes/和azkaban-exec-server-3.73.1/plugins/jobtypes下面的commonprivate.properties
第⑦步:拷贝当前服务器上的Azkaban-web-server和Azkaban-exec-server
将当前服务器上的解压修改后的安装包 拷贝到你要安装集群的服务器上,不用做任何修改。
第⑧步:启动Azkaban-exec-server
切记先启动每台服务器Azkabn-exec-server,同时激活服务, 最后再启动Azkaban-web-server 服务器。
[root@bigdata001 azkaban-exec-server-3.73.1]# ./bin/start-exec.sh
查看启动日志
[root@bigdata001 azkaban-exec-server-3.73.1]# more executorServerLog__2019-06-27+12:44:55.out
日志没有问题,就开始激活执行器:
[root@bigdata001 azkaban-exec-server-3.73.1]# curl -G "localhost:$(<./executor.port)/executor?action=activate" && echo
看到"status":"success" 即激活成功。
备注:切记在bin目录同级别启动,否则 会出现多种问题......
下面是官网说明:同级目录bin启动
同样的操作步骤,分别启动其他的服务器的azkaban-exec-server上的服务,然后然后激活执行器
最后到第一台服务器上,cd /mnt/azkaban-web-server-3.73.1
[root@bigdata001 azkaban-web-server-3.73.1]# ./bin/start-web.sh
第⑨步:访问192.168.1.212:8081 【配置文件指定】
默认用户名:azkaban 密码:azkaban 【用戶配置文件修改】
上传简单Demo,测试成功,用法见文末
查看日志,执行,任务,亲测成功
至此Azkaban的分布式集群模式安装完毕。
—————————————错误集结———————————————
错误①,查看日志发现(此处由于配置文件配置非全定路径,而是绝对路径,找不到,所以报错,)
发生原因:切换到bin目录里面启动导致:
错误②,查看日志发现,此处无法找到执行者,查看Mysql数据库,select * from azkaban.executors 表用户为空,
手动插入:insert into azkaban.executors(host,port,active) values("当前服务IP",12321,1);
如果是集群 记得将集群的3个IP全部插入到当前表中
insert into azkaban.executors(host,port,active) values("机器1IP",12321,1);
insert into azkaban.executors(host,port,active) values("机器2IP",12321,1);
insert into azkaban.executors(host,port,active) values("机器3IP",12321,1);
再次启动,启动成功:如下图所示
访问 192.168.1.129:8081 【发现样式丢失,还是配置文件的路径问题,需要配置全路径】
发生原因:切换到bin目录里面启动导致
将azkaban.properties
web.resource.dir=/usr/liuwunan/Azkaban/azkaban-web-server-3.73.1/web 修改为全路径即可,登录用户名密码,在
/usr/liuwunan/Azkaban/azkaban-web-server-3.73.1/conf/azkaban-users.xml 配置文件中,可以自己填写
由此可知Azkaban的web-Server 服务启动了,由于负责执行任务的为exec-server服务,所以将web-server的conf中的azkaban.properties内容复制一份到exec-server的conf下的azkaban.properties的中【完全替换】。
然后将服务器1 上面的azkaban-exec-server-3.7.3.1 拷贝到 服务器2,服务器3上去,为了简单方便,同样可以将存放当前Azkaban所有服务的总文件夹 拷贝到 机器2,机器3上面去。在启动的时候,机器1 ,机器2,机器3先启动 azkaban-exec-server-3.7.3.1,然后再去启动 azkaban-web-server-3.7.3.1【切记:先启动exec-server ,最后启动web-server】
错误④
只有执行了激活执行器才能进行 工作流执行,否则job任务会一直是等待状态,日志会报错。
将上述启动exec-server的服务分别用同样的方法,去机器2,机器3上面启动,然后最后去机器1上启动 web-server
写一个简单的Job 提交到 Azkaban的服务器上运行。
———————————————————————————————————————————————————
此处遇到遇到一个大坑就是 ,提交任务一直都是准备状态,始终没有执行,查阅百度,很多人都是这种情况。异常信息为
后续得知,就是因为 执行器没有激活,无法执行,运行下面命令即可
[root@localhost azkaban-exec-server-3.73.1]# curl -G "localhost:$(<./executor.port)/executor?action=activate" && echo
切记和bin同级别目录,否则会失败
整体的执行顺序为: 1.分别启动exec-server服务器,2.然后按照顺序激活exec-server,3最后启动web-server服务器
Azkaban的使用,和工作流程使用请见 https://blog.csdn.net/weixin_38822045/article/details/89147178