- 背景
- 简介
- 资料下载
- MySQL 安装
- Jdk 安装
- azkabn-web 安装
- azkaban-executor 安装
- 启动测试
- 踩坑记录
最近项目上需要搭建一个任务调用框架,在对比了市面上一些常用的调度框架比如Quartz,Elastic Job,xxl-job 以及 azbakan 之后,在综合考虑了易用性,学习成本,以及在公司其他项目中已经使用了azbakan 之后,决定使用 azbakan 作为这个项目的任务调度框架。
确定了使用 azbakan 作为任务调度框架之后,就需要搭建它的一个运行环境,这篇文章就用来详细记录azbakan的一个安装过程。
azkanban 是LinkedIn公司开发的、用于解决Hadoop任务依赖问题的一套实现方案。简单来说我们有许多的定时任务需要运行,这些任务有的是有依赖顺序的,比如 B 任务
的运行需要依赖 A 任务
的运行结果,C 任务
需要依赖 B 任务
的运行结果等。那么使用 azkaban 就很容易的实现,只需要在job配置文件
中添加任务之间的依赖关系,剩下交给 azkaban 就行了。
azkaban 分为三部分:
azkaban 目前最新的版本为3.0,我这次使用的是2.5的版本,安装方式也有两种,一种是通过源码编译安装,一种是通过压缩包解压安装。我这次通过压缩包解压的方式进行安装,所需的资料如下:
其中 create-all-sql-2.5.0.sql
为 azkaban 的 SQL 脚本,是一些建表语句。jdk-8u161-linux-x64.tar.gz
是jdk安装包,因为 azkaban 的运行需要依赖 jdk,mysql-connector-java-8.0.16.jar
是mysql驱动。
这些资料关注【Java技术编程】公众号后发送【azkaban】即可免费获取
azkaban 提供三种安装模式:
在 solo server mode 模式下,DB使用嵌入式H2数据库,并且 web 服务与 executor 服务运行在同一个进程中。
two server mode 。web 服务和 executor 服务最好是运行在不同的主机上,用于要求更高的生产环境。
multiple executor mode 用于要求最高的生产环境。数据库存储要使用主从模式的 MySQL 实例。web 服务和 executor 服务要运行在不同的主机上。
本次安装的是双服务器模式( two server mode),用的是阿里云的服务器进行安装。
第一步首先需要安装mysql,由于该篇文章主要用来详细记录azkaban的安装步骤,所以安装mysql不是本文的重点,我也是按照网上的教程进行安装的。
mysql 成功安装后,进行登陆:
mysql -u root -p 回车之后,输入密码
创建一个数据库共azkaban使用,你也可以在创建一个用户,我这里就直接使用 root 用户了。
mysql> CREATE DATABASE azkaban;
执行脚本,创建对应的表结构:
mysql> use azkaban
mysql> source /root/mysql/create-all-sql-2.5.0.sql
如下所示:
执行成功后,查看表是否创建成功:
mysql> show tables
踩坑:如果这里你也是用阿里云服务器安装mysql,你会发现在服务器上可以连接mysql服务,但是使用navcat等客户端工具连接不上的时候,你可以到阿里云服务器控制台添加一条防火墙规则,把3306端口打开就可以了,具体操作可参考我上篇文章:https://tsmyk0715.blog.csdn.net/article/details/112924076
首先把 jdk 安装包 jdk-8u151-linux-x64.tar.gz 复制到 /usr/lib/jdk 目录下。
解压:
tar -zxvf jdk-8u151-linux-x64.tar.gz
配置环境变量:
vim /etc/profile
添加如下内容
export JAVA_HOME=/usr/lib/java
export PATH=$JAVA_HOME/bin:$PATH
使环境变量生效
. /etc/profile
验证环境:
java -version
java
javac
tar -zxvf azkaban-web-server-2.5.0.tar.gz
其中:
使用 cp
命令把mysql的驱动拷贝到 extlib
目录下:
Azkaban 使用 SSL 套接字连接,即启用SSL,访问时使用 https 进行访问,要求必须有一个可用的密钥库。
keystore
是 jdk 提供的一个工具,可以直接在安装jdk服务器上生成,也可以在window系统生成,如果在 window 下生成,则需要使用管理员模式打开 cmd
控制台,进入到jdk安装下的bin目录下执行命令。
我是在window本地生成的,步骤如下:
以管理员模式打开 cmd 控制台,进入到jdk安装下的bin目录下,执行如下命令:
keytool -keystore keystore -genkey -keyalg RSA
按照提示输入密码等信息即可生成keystore.
执行成功后,在当前目录下即可看到生成的 keystore 文件,把该文件上传到服务器指定的目录即可。
进入到 conf
目录下,该目录下有两个配置文件:
azkaban.properteis 配置文件如下:
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
# web 页面地址,注意这里必须是绝对路径,不然页面展示不正常
web.resource.dir=/root/azkaban/azkaban-web-server/azkaban-web-2.5.0/web/
# 时区
default.timezone.id=Asia/Shanghai
#用户管理设置,使用默认的账户和角色,可以自定义实现
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=/root/azkaban/azkaban-web-server/azkaban-web-2.5.0/conf/azkaban-users.xml
# 数据库相关配置
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=root
mysql.password=123456
mysql.numconnections=100
# keystore 相关配置,启用 SSL,使用https访问
jetty.maxThreads=25
jetty.ssl.port=8443
jetty.port=8081
# keystore 绝对路径
jetty.keystore=/root/azkaban/azkaban-web-server/azkaban-web-2.5.0/conf/keystore
# 生成keystore时输入的密码
jetty.password=123456
jetty.keypassword=123456
jetty.truststore=/root/azkaban/azkaban-web-server/azkaban-web-2.5.0/conf/keystore
jetty.trustpassword=123456
# Executor 的端口号,需要和 azkaban-executor 下的配置文件里面配置的一致
executor.port=12321
# 邮件相关配置
mail.sender=
mail.host=
job.failure.email=
job.success.email=
到这里,azkaban-web-server 就安装完成了,现在进入到 bin 目录下,执行如下命令进行启动:
sh azkaban-web-start.sh
如果出现如下所示,则表示启动成功:
执行如下命令查看对应的进程:
ps -ef | grep azkaban-web-server
azkaban-executor 安装就比较简单了。
tar -zxvf azkaban-executor-server-2.5.0.tar.gz
使用 cp
命令把mysql的驱动拷贝到 extlib
目录下:
进入到 conf目录下,该目录下有三个配置文件:
azkaban.properties 配置文件如下:
#时区
default.timezone.id=Asia/Shanghai
# JobTypes 插件的路径
azkaban.jobtype.plugin.dir=plugins/jobtypes
#global.properties的路径
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
# 数据库配置
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban2
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
executor.maxThreads=50
# Executor的端口,这个需要和 executor-web保持一致
executor.port=12321
executor.flow.threads=30
到这里 azkaban-executor-server 就安装完成了,现在进入到 bin 目录下,执行如下命令进行启动:
sh azkaban-executor-start.sh
如果出现如下所示,则表示启动成功:
执行如下命令查看对应的进程:
ps -ef | grep azkaban-executor-server
到这里 azkaban 运行环境就安装完毕了,接下来页面访问看一下吧。
先执行如下命令查看服务是否正常:
ps -ef | grep azkaban
可以看到服务都是正常的,在浏览器中输入 https://ip:8443
即可访问 azkaban 的web页面:
默认用户名和密码都是 azkaban,登陆之后如下所示:
到这里就结束了,在安装的过程中也踩到了一些坑,如下所示:
这是因为使用的是阿里云的服务器进行安装,而服务器默认只会对外开放 80,443,22 端口,就需要在控制台配置开放3306端口,具体操作可以参考上篇文章:https://tsmyk0715.blog.csdn.net/article/details/112924076
在启动 azkaban-web 服务的时候,会提示azkaban-users.xml文件不存在,这是因为在azkaban.properties配置文件中azkaban-users.xml配置的是相对路径,需要改为绝对路径
当访问azkaban的web页面时,页面不能正常展示,出现如下所示:
这是因为在 azkaban-web-server 下的azkaban.properties配置文件中web目录配置成了相对目录,需要改为绝对目录:
web.resource.dir=/root/azkaban/azkaban-web-server/azkaban-web-2.5.0/web/
浏览器地址栏输入 https://ip:8443 之后,出现如下画面:
这是和navcat不能链接mysql一样的原因,阿里云服务器默认没有开放 8443 端口,需要手动添加,添加了之后,就可以访问了,如下所示:
ps: 本文首发于个人技术公众号【Java技术编程】,欢迎关注。
下篇文章将会开发一个定时任务,上传到azkaban中运行,敬请期待。
Vue加载优化,速度提高一倍。
公众号开发:获取用户消息和回复消息
Ribbon 负载均衡器 LoadBalancer 源码解析
Redis 数据结构-字典源码分析
Redis 数据结构-字符串源码分析
国产达梦数据库与MySQL的区别