Azkaban4.0.0搭建以及错误记录

Azkaban4.0.0搭建以及错误记录

4.0.0最大的改动就是支持k8s容器化部署,同时部分功能进行了恢复,之前老版本好用的功能在3.9.0版本后被取代了,现在恢复,目前测试下来azkaban4.0还是很稳定的。我不理解但我大受震撼,为啥好用的功能取消掉又恢复呢?而且咱就是说,azkaban原来一个轻量级的调度框架,现在为啥越来越难用,搭建的过程中各种bug,有这时间为啥不用DS呢。

环境搭建准备

azkaban3.0以后呢以及不支持安装包安装了。都是tar包,需要自己下载解压编译。(注意,这里默认电脑上面自带jdk8和mysql以及git环境,没有的请先安装,mysql8的话注意更换驱动)

1.下载tar包

下载地址:https://github.com/azkaban/azkaban/releases

下载完成后上传到服务器,开始操作

解压

tar -zxvf /路径/压缩包名 -C /目的路径

解压完成后将解压好的文件夹取一个方便的名字

mv /解压后的文件名 /新的文件名

下载完成后,开始编译azkaban内部的打包方式是gradle,azkaban在编译的过程中会自动根据版本的配置下载对应的gradle,但是下载速度感人,我们可以去解压后的文件下的/gradle/wrapper/gradle-wrapper.properties查看对应的gradle的版本,手动下载。

wget https://services.gradle.org/distributions/gradle-版本号.zip

修改配置文件中的gradle-wrapper.properties中的 distributionUrl属性,指明使用本地的 gradle

distributionUrl=gradle-版本号.zip

好了,我们可以开始build

./gradlew build installDist -x test

失败了就多来几次,实在不行,咱就找个编译好的包,安装就完了,咱不受这气

编程成功后

关键性的包就3个:db,exec,web

db里面存放的是azkaban配置的sql文件

exec就是运行的executor端服务了,也就是真正执行流的地方

web就是azkaban的web端服务了

这里补充一点,自己学习用也尽量不要用solo,可以在一台机器上搭建multiple executor模式,只不过是一个exec,exec和web在一个节点上罢了,但是你可以感受一下配置是咋配的哦,以后要搭建集群也好搭建。

分别解压这三个包,改名字

tar -zxvf /文件路径/azkaban-db-0.1.0-SNAPSHOT.tar.gz.tar.gz -C /目标路径
tar -zxvf /文件路径/azkaban-exec-0.1.0-SNAPSHOT.tar.gz.tar.gz -C /目标路径
tar -zxvf /文件路径/azkaban-web-0.1.0-SNAPSHOT.tar.gz.tar.gz -C /目标路径

mv azkaban-db-0.1.0-SNAPSHOT db
mv azkaban-exec-0.1.0-SNAPSHOT exec
mv azkaban-web-0.1.0-SNAPSHOT web

环境搭建

好了,到这一步就可以正式开始搭建了,不要聊了,不要聊了,先上DJ,先上DJ

配置Mysql

mysql -h ip地址 -P 3306 -u 用户名 -p密码(这里没有空格)
create database azkaban
use azkaban
source /目录地址/db/create-all-sql-0.1.0-SNAPSHOT.sql

sql脚本执行好以后。show tables,看看里面有没有表

创建ssl配置:

生成 keystore 的密码及相应信息的密钥库
cd /opt/module/azkaban
keytool -keystore keystore -alias jetty -genkey -keyalg RSA

输入 keystore 密码:123456
再次输入新密码: 123456
您的名字与姓氏是什么?
[Unknown]:
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的州或省份名称是什么?
[Unknown]:
该单位的两字母国家代码是什么
[Unknown]: CN
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN 正确吗?
[]: y

输入的主密码
(如果和 keystore 密码相同,按回车):
再次输入新密码:


mv keystore /目标路径(web路径下)

开始配置web服务的配置文件:

# Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=/opt/module/azkaban/web/web/
default.timezone.id=Asia/Shanghai
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=/opt/module/azkaban/web/conf/azkaban-users.xml
# Loader for projects
executor.global.properties=/opt/module/azkaban/exec/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 SSL 端口
jetty.ssl.port=8443
#Jetty  端口
jetty.port=8081

#SSL 文件名(绝对路径)
jetty.keystore=/opt/module/azkaban/web/keystore
#SSL 文件密码 
jetty.password=123456 
#Jetty 主密码与 keystore 文件相同 
jetty.keypassword=123456
#SSL 文件名(绝对路径)
jetty.truststore=/opt/module/azkaban/web/keystore
#SSL 文件密码
jetty.trustpassword=123456

# Azkaban Executor settings
executor.port=12321

# Azkaban Executor settings
# mail settings
mail.sender=
mail.host=

# 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 mysql settings by default. Users should configure their own username and password.
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100
#Multiple Executor
azkaban.use.multiple.executors=true
#azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus//过滤掉executor的限制,不然会报错
azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
azkaban.executorselector.comparator.Memory=1
azkaban.executorselector.comparator.LastDispatched=1
azkaban.executorselector.comparator.CpuUsage=1

配置azkaban-users.xml

<azkaban-users>
  <user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
  <user password="metrics" roles="metrics" username="metrics"/>
  <user username="admin" password="admin" roles="admin" /> 
  <role name="admin" permissions="ADMIN"/>
  <role name="metrics" permissions="METRICS"/>
</azkaban-users>

配置executor服务的配置文件

# 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=conf/azkaban-users.xml
# Loader for projects
executor.global.properties=/opt/module/azkaban/exec/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://localhost:8081
# mail settings
mail.sender=
mail.host=
# 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.jobtype.plugin.dir=/目标路径/plugins/jobtypes(这里要写绝对路径,别问,问就是都是泪水)
# Azkaban mysql settings by default. Users should configure their own username and password.
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30
azkaban.executor.runtimeProps.override.eager=false

进入jobtypes目录下配置commonprivate.properties

#添加一行
azkaban.native.lib = false

启动服务

./azkaban/exec/bin/start.sh
./azkaban/web/bin/start.sh

启动发现访问不了
jps发现没有web服务,查看日志发现没有找到exec服务,启动失败
进入数据库中,将executors的表里面对应的active字段改为1,多exec下,让那个生效就该那个
./azkaban/exec/bin/shutdown.sh 关闭exec服务,重启一下,这里要注意,无论做了那种配置的修改,修改前最好是将服务停掉,修改完在启动
./azkaban/exec/bin/start.sh
curl -G "exec服务的地址:12321/executor?action=activate" && echo将exec的状态改为活跃,双重激活。
./azkaban/web/bin/start.sh
启动的时候注意要在同级目录下启动,不然有时候会报错

成功,完结撒花!

错误记录:

  1. 搭建过程中build不成功,原因是linkedin的服务器地址改了

    sed -i.bak \
    "s/linkedin.bintray.com\/maven/linkedin.jfrog.io\/artifactory\/open-source\//" \
    azkaban-4.0.0/build.gradle \
    && rm -f azkaban-4.0.0/build.gradle.bak
    
  2. 运行任务时报:[Azkaban] Unable to get scheduled flow triggers

    网站上有很多种说法,我的解决方法是:

    azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus//过滤掉executor的限制,不然会报错 也清理了内存,看了github对有的人有效有的人无效

  3. missing required property “azkaban.native.lib”

    这个问题需要配置azkaban.properties文件,看了前面的过程就懂了

注明:本篇博客也是我在看了很多别人的博客和github上的lssue总结出来的,搭建实在公司电脑搭建的配置文件不方便显示,有的配置片段是应用的别的博主的

引用配置片段的原文链接:https://blog.csdn.net/qq_38075749/article/details/121539432?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2-121539432-blog-121144836.pc_relevant_multi_platform_whitelistv1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2-121539432-blog-121144836.pc_relevant_multi_platform_whitelistv1&utm_relevant_index=5

如果侵权,请联系我删除

build以后的包在这里:

链接:https://pan.baidu.com/s/1Ah1Y7AbnLWc-yoI5AuuqYQ
提取码:po4v
–来自百度网盘超级会员V4的分享

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值