前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >手把手教你安装 azkaban 运行环境

手把手教你安装 azkaban 运行环境

作者头像
Java技术编程
发布2021-02-03 15:14:58
8170
发布2021-02-03 15:14:58
举报
文章被收录于专栏:Java技术编程Java技术编程

好好学习,天天向上

  1. 背景
  2. 简介
  3. 资料下载
  4. MySQL 安装
  5. Jdk 安装
  6. azkabn-web 安装
  7. azkaban-executor 安装
  8. 启动测试
  9. 踩坑记录

1. 背景

最近项目上需要搭建一个任务调用框架,在对比了市面上一些常用的调度框架比如「Quartz」「Elastic Job」「xxl-job」 以及 「azbakan」 之后,在综合考虑了易用性,学习成本,以及在公司其他项目中已经使用了「azbakan」 之后,决定使用 「azbakan」 作为这个项目的任务调度框架。

确定了使用 「azbakan」 作为任务调度框架之后,就需要搭建它的一个运行环境,这篇文章就用来详细记录「azbakan」的一个安装过程。

2. 简介

「azkanban」 是LinkedIn公司开发的、用于解决Hadoop任务依赖问题的一套实现方案。简单来说我们有许多的定时任务需要运行,这些任务有的是有依赖顺序的,比如 B 任务的运行需要依赖 A 任务的运行结果,C 任务需要依赖 B 任务的运行结果等。那么使用 「azkaban」 就很容易的实现,只需要在job配置文件中添加任务之间的依赖关系,剩下交给 「azkaban」 就行了。

3. 资料下载

azkaban 分为三部分:

  1. 「MySQL」
  2. 「AzkabanWebServer」
  3. 「AzkabanExecutorServer」
  • MySQL 主要的用来存储上传的任务文件,保存任务的执行状态和存储任务日志等。
  • AzkabanWebServer 负责工程管理、用户认证、任务调度和监控。我们开发好的任务,通过web提供的页面上传到AzkabanWebServer上即可调度运行任务。
  • AzkabanExecutorServer 主要服务任务的提交,执行等。

「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驱动。

❝这些资料关注公众号后发送【azkaban】即可免费获取

azkaban 提供三种安装模式:

  • 单个独立应用 “solo-server”模式,
  • 相对重量级点的双服务器模式( two server mode)
  • 分布式的多执行器模式( multiple-executor mode )。

在 solo server mode 模式下,DB使用嵌入式H2数据库,并且 web 服务与 executor 服务运行在同一个进程中。

two server mode 。web 服务和 executor 服务最好是运行在不同的主机上,用于要求更高的生产环境。

multiple executor mode 用于要求最高的生产环境。数据库存储要使用主从模式的 MySQL 实例。web 服务和 executor 服务要运行在不同的主机上。

本次安装的是双服务器模式( two server mode),用的是阿里云的服务器进行安装。

4. 安装MySQL

第一步首先需要安装mysql,由于该篇文章主要用来详细记录「azkaban」的安装步骤,所以安装mysql不是本文的重点,我也是按照网上的教程进行安装的。

mysql 成功安装后,进行登陆:

代码语言:javascript
复制
mysql -u root -p 回车之后,输入密码

创建一个数据库供azkaban使用,你也可以在创建一个用户,我这里就直接使用 root 用户了。

代码语言:javascript
复制
mysql> CREATE DATABASE azkaban;

执行脚本,创建对应的表结构:

代码语言:javascript
复制
mysql> use azkaban
mysql> source /root/mysql/create-all-sql-2.5.0.sql

如下所示:

执行成功后,查看表是否创建成功:

代码语言:javascript
复制
mysql> show tables

❝踩坑:如果这里你也是用阿里云服务器安装mysql,你会发现在服务器上可以连接mysql服务,但是使用navcat等客户端工具连接不上的时候,你可以到阿里云服务器控制台添加一条防火墙规则,把3306端口打开就可以了,具体操作可参考我上篇文章:https://tsmyk0715.blog.csdn.net/article/details/112924076

5. JDK 安装

首先把 jdk 安装包 「jdk-8u151-linux-x64.tar.gz」 复制到 /usr/lib/jdk 目录下。

解压:

代码语言:javascript
复制
tar -zxvf jdk-8u151-linux-x64.tar.gz

如下所示:

配置环境变量:

代码语言:javascript
复制
vim /etc/profile

添加如下内容
export JAVA_HOME=/usr/lib/java
export PATH=$JAVA_HOME/bin:$PATH

使环境变量生效

代码语言:javascript
复制
. /etc/profile

验证环境:

代码语言:javascript
复制
java -version
java
javac

6. azkabn-web 安装

解压:

代码语言:javascript
复制
tar -zxvf azkaban-web-server-2.5.0.tar.gz

其中:

  • bin:存放启动脚本
  • conf:存放配置文件
  • extlib:扩展包
  • lib:依赖包
  • plugins:插件
  • web:web相关的js,css等。

拷贝jdbc驱动:

使用 cp 命令把mysql的驱动拷贝到 extlib 目录下:

生成keystore文件:

Azkaban 使用 SSL 套接字连接,即启用SSL,访问时使用 https 进行访问,要求必须有一个可用的密钥库。

keystore 是 jdk 提供的一个工具,可以直接在安装jdk服务器上生成,也可以在window系统生成,如果在 window 下生成,则需要使用管理员模式打开 cmd控制台,进入到jdk安装下的bin目录下执行命令。

我是在window本地生成的,步骤如下:

代码语言:javascript
复制
以管理员模式打开 cmd 控制台,进入到jdk安装下的bin目录下,执行如下命令:

keytool -keystore keystore -genkey -keyalg RSA

按照提示输入密码等信息即可生成keystore.

执行成功后,在当前目录下即可看到生成的 keystore 文件,把该文件上传到服务器指定的目录即可。

修改配置文件:

进入到 conf目录下,该目录下有两个配置文件:

  • azkaban.properteis - Azkaban 的运行时参数,是必需的主配置文件。
  • azkaban-users.xml - 添加用户和角色供认证使用。若 XmlUserManager 没有设置使用该文件,则其不会被用到。
代码语言:javascript
复制
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 目录下,执行如下命令进行启动:

代码语言:javascript
复制
sh azkaban-web-start.sh

如果出现如下所示,则表示启动成功:

执行如下命令查看对应的进程:

代码语言:javascript
复制
ps -ef | grep azkaban-web-server 

7. azkaban-executor 安装

azkaban-executor 安装就比较简单了。

解压

代码语言:javascript
复制
tar -zxvf azkaban-executor-server-2.5.0.tar.gz

每个目录的作用和 azkaban-web的一致。

使用 cp 命令把mysql的驱动拷贝到 extlib 目录下:

修改配置文件

进入到 conf目录下,该目录下有三个配置文件:

  • global.properties 全局静态参数,每个工作流和任务都共享其中的配置
  • azkaban.private.properties 私有配置文件,可以用来配置密码之类的,
  • azkaban.properties 主配置文件
代码语言:javascript
复制
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 目录下,执行如下命令进行启动:

代码语言:javascript
复制
 sh azkaban-executor-start.sh

如果出现如下所示,则表示启动成功:

执行如下命令查看对应的进程:

代码语言:javascript
复制
ps -ef | grep azkaban-executor-server

到这里 azkaban 运行环境就安装完毕了,接下来页面访问看一下吧。

启动测试

先执行如下命令查看服务是否正常:

代码语言:javascript
复制
ps -ef | grep azkaban

可以看到服务都是正常的,在浏览器中输入 https://ip:8443 即可访问 azkaban 的web页面:

默认用户名和密码都是 「azkaban」,登陆之后如下所示:

踩坑记录

到这里就结束了,在安装的过程中也踩到了一些坑,如下所示:

1. mysql 安装成功后服务器可以连接,navcat不能连接

这是因为使用的是阿里云的服务器进行安装,而服务器默认只会对外开放 「80」,「443」,「22」 端口,就需要在控制台配置开放「3306」端口,具体操作可以参考上篇文章:https://tsmyk0715.blog.csdn.net/article/details/112924076

2. conf/azkaban-users.xml doesn't exist

在启动 azkaban-web 服务的时候,会提示azkaban-users.xml文件不存在,这是因为在azkaban.properties配置文件中azkaban-users.xml配置的是相对路径,需要改为绝对路径

3. 访问azkaban的web页面,页面样式混乱

当访问azkaban的web页面时,页面不能正常展示,出现如下所示:

这是因为在 azkaban-web-server 下的azkaban.properties配置文件中web目录配置成了相对目录,需要改为绝对目录:

代码语言:javascript
复制
web.resource.dir=/root/azkaban/azkaban-web-server/azkaban-web-2.5.0/web/

4. 输入 https://ip:8443 之后,页面不能访问

浏览器地址栏输入 https://ip:8443 之后,出现如下画面:

这是和navcat不能链接mysql一样的原因,阿里云服务器默认没有开放 「8443」 端口,需要手动添加,添加了之后,就可以访问了,如下所示:

下篇文章将要开发一个定时任务,上传azkaban运行,敬请期待。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java技术大杂烩 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 背景
  • 2. 简介
  • 3. 资料下载
  • 4. 安装MySQL
  • 5. JDK 安装
  • 6. azkabn-web 安装
    • 解压:
      • 拷贝jdbc驱动:
        • 生成keystore文件:
          • 修改配置文件:
            • 启动
            • 7. azkaban-executor 安装
              • 解压
                • 修改配置文件
                  • 启动
                  • 启动测试
                  • 踩坑记录
                    • 1. mysql 安装成功后服务器可以连接,navcat不能连接
                      • 2. conf/azkaban-users.xml doesn't exist
                        • 3. 访问azkaban的web页面,页面样式混乱
                          • 4. 输入 https://ip:8443 之后,页面不能访问
                          相关产品与服务
                          云服务器
                          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档