Azkaban——工作流管理器 部署测试


Azkaban 部署模式

Azkaban 3.x 版本中, Azkaban提供了3种部署模式,:轻量级 solo server mode(独立服务器模式)、重量级的 two server mode(双服务器模式)和 distributed multiple-executor mode(分布式多执行器模式)。

部署模式 说明
solo server mode 在独立服务器模式下,使用数据库是内嵌的 H2,并且 Web Server(Web 服务器)和 Executor Server(执行服务器)都在同一进程中运行。如果只想尝试一下 Azkaban 的使用,或者是很小规模的测试使用,这种部署模式还是可行的。
two server mode 双服务模式适用于比较复杂的生产环境,它的数据库会由具有主从设置的 MySQL 实例提供支持。其中,Web 服务器和执行服务器应在不同的进程中运行,以便升级和维护过程中不影响用户。
distributed multiple-executor mode 分布式多执行器模式适用于特别复杂的生产环境,它的数据库同样应该由具有主从设置的 MySQL 实例支持。理想情况下,Web 服务器和执行服务器应在不同的主机中运行,以便升级和维护不影响用户。

双服务器模式部署(two server mode)


1.下载 Azkaban 源文件

azkanban3.50.0 源码包下载地址(github)

CentOS 7
JDK 1.8


2.Azkaban 源文件编译

将下载后的 Azkaban 源文件压缩打包 azkaban-3.50.0.tar.gz 上传至 master 主机上,并且解压到指定目录:

tar -zxvf azkaban-3.50.0.tar.gz /usr/azkaban

执行上述命令后,进入解压后的 azkaban-3.50.0 文件夹目录下,接着直接使用如下命令对 Azkaban 源文件进行编译(注意,编译过程中可能需要 Git 工具下载相关官文件,CentOS需要使用yum仓库下载 Git)

yum -y install git

# 在azkaban-3.50.0 文件夹目录下执行如下命令对源文件进行编译
./gradlew build -x test

注意:在编译源文件的过程中,可能会发生编译中端等现象,大多原因是因为网络问题,如果网慢可能会导致编译好几个小时的情况,总之如果中端,就多执行几次上述命令,一直到编译成功,如下图演示,当然下图显示9s是多次执行命令的结果。

在这里插入图片描述
编译成功后会在解压目录下出现三个新的目录,如下图:
在这里插入图片描述


3.Azkaban 安装包获取

Azkaban 源文件编译成功后,会在解压目录下各自 azkaban-*/build/distributions 目录下生成基于 Windows 和 Linux 的安装包文件。如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

后续的 Azkaban 安装配置过程中,只需要解压上述目录中的安装包即可。


Azkaban 安装配置

在准备好 Azkaban 安装包后,就可以正式进行 Azkaban 的安装配置了。接下来,为了后续安装后的 Azkaban 方便调用 Hive,下面在 Master 主节点下进行配置。


1.MySQL 安装配置(数据库服务)

在前面介绍 Azkaban 的部署模式时,已经讲解了双服务器模式更推荐使用 MySQL 作为元数据的储存库,所以安装 Azkaban 的第一步必须安装好 MySQL 数据库。

可参考这篇文章第一章节来安装 MySQL:
构建数据仓库Hive(基于centos7系统)


(1)创建 Azkaban 数据库及用户

首先在 master 主机上进入数据库,并且创建 azkaban数据库

mysql -uroot -p
mysql>CREATE DATABASE azkaban;

创建 azkaban 数据库成功后,还可以为该数据库专门创建和分配具有执行权限的新用户,或者使用 root 用户进行操作。

由于在默认配置下,MySQL 会根据配置文件限制接收数据包的大小,则可通过配置属性 max_allowed_packet,将允许数据包大小设置为更高的值,如 1024MB。进入 /etc/my.cnf 文件进行编辑

在这里插入图片描述
配置过后必须重新启动 MySQL 服务。

systemctl restart mysqld

(2)Azkaban 数据库表初始化

进入到 /usr/azkaban/azkaban-3.50.0/azkaban-db/build/distributions 目录下先对编译生成的 azkaban-db-0.1.0-SNAPSHOT.tar.gz 文件进行解压。

tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz

在这里插入图片描述

然后进入解压后的目录,找到我们需要的 sql 脚本
在这里插入图片描述

之后直接进入到 azkaban数据库,执行数据库初始化脚本文件,如下:

source /usr/azkaban/azkaban-3.50.0/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql

执行之后会生成很多表文件,这些表的创建就是对 Azkaban 进行了初始化:
在这里插入图片描述


2.Azkaban Web 服务安装配置(Web 服务)

完成 Azkaban 依赖的 MySQL 元数据库的安装和初始化之后,就可以进入双服务的安装阶段了,这里先以安装 Azkaban Web 服务为例进行说明。


(1)SSL 创建

Azkaban 使用 SSL 套接字连接器,这意味着必须提供密匙库。

首先在 master 主机上的某个目录执行如下命令,生成 SSL 密匙库。

keytool -keystore keystore -alias jetty -genkey -keyalg RSA

在这里插入图片描述
密匙口令,输入123456,接下来一路回车,然后在是否正确地方填写 Y ,之后同样输入 123456

执行完毕之后就会在当前目录下生成一个 keystore 密匙文件。
如下图:
在这里插入图片描述


(2)Azkaban Web 服务器安装配置

将前面章节编译好的 Web 服务器安装包进行解压到 /usr/azkaban 目录下

tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C /usr/azkaban/

在这里插入图片描述

执行命令后会在 /usr/azkaban/azkaban-web-server-0.1.0-SNAPSHOT 目录下产生三个文件夹,如下图,而实际情况,Azkaban 服务需要多个文件,具体如下表:
在这里插入图片描述

文件名 说明
bin 启动 Azkaban jetty 服务器的脚本
conf Azkaban 服务器的配置
lib Azkaban 依赖的 jar 包
extlib 添加到 extlib 的其他 jar 将添加到 Azkaban 的类路径当中
plugins 可以安装插件的目录
web Azkaban Web 服务器的 Web(css,javascript,images)文件

如上图,在 Azkaban Web 服务器的安装目录下还缺少 conf、extlib 和 plugins 3个文件(Azkaban 官方提供的有些版本存在这些文件),其中 conf 和 plugins 这俩个文件可以从编译的 azkaban-solo-server 文件包(位于解压安装的主目录)下进行解压复制,而 extlib 是一个空文件夹,可以自行创建。

在这里插入图片描述
在这里插入图片描述

cp -r conf/ /usr/azkaban/azkaban-web-server-0.1.0-SNAPSHOT/
cp -r plugins/ /usr/azkaban/azkaban-web-server-0.1.0-SNAPSHOT/

在这里插入图片描述

接着打开 conf 目录下的 azkaban.properties 配置文件,针对该模板文件中的时区、MySQL 和 jetty 进行修改,内容如下:

# 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=conf/global.properties
azkaban.project.dir=projects

# 对数据库类型和配置进行修改编辑
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=root
mysql.password=123456
mysql.numconnections=100

h2.path=./h2
h2.create.tables=true
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
# 对 jetty 服务配置进行修改编辑
jetty.use.ssl=true
jetty.maxThreads=25
jetty.port=8081
jetty.ssl.port=8443
jetty.keystore=keystore
jetty.password=123456
jetty.keypassword=123456
jetty.truststore=keystore
jetty.trustpassword=123456

# Azkaban Executor settings
executor.port=12321
# 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.properties 配置文件中,主要针对 Azkaban Web 服务器的时区、MySQL 和 jetty 服务进行了修改配置。其中 default.timezone.id=Asia/Shanghai 要求默认时区设置成 亚洲/上海 ; MySQL配置中,database.type=mysql 要求数据库类型为 mysql(默认为 H2),还根据实际情况配置了数据库地址、名称、用户名、密码等信息;jetty 服务配置中,jetty.use.ssl=true 表示启用了 SSL 链接,同时根据实际 SSL 安装情况配置了 jetty 相关的端口号、密码等信息。另外,在上述文件属性配置时,后缀不能有任何多余空格或者字符,否则服务启动失败!

注意事项:
为了保证 Azkaban Web 服务器配置文件 azkaban.properties 能够找到前面生成的 keystore,还需要将生成的 keystore 密钥文件移动到当前解压后的 Azkaban Web 服务根目录下(本人上文中将密钥文件放在了 /root 目录下,Azkaban Web 的根目录在 /usr/azkaban/azkaban-web-server-0.1.0-SNAPSHOT )

cp /root/keystore /usr/azkaban/azkaban-web-server-0.1.0-SNAPSHOT/

完成 Azkaban Web 服务器核心文件 azkaban.properties 的配置后,还可以打开 conf 目录下的 azkaban-user.xml 用户配置文件,为 Azkaban Web 服务器添加或者修改管理用户,具体如下:

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

在 azkaban.properties 文件中,默认为 Azkaban Web 服务器配置了一些具有权限的用户,添加的内容表示自定义添加可一个用户名和密码均为 admin 的用户,并且为该用户设置了 “metrics,admin” 所有权限,后续将会使用该用户j进行登陆和管理 Azkaban 服务。

加入这一行内容即可。
在这里插入图片描述

最后,在启动 Azkaban Web 服务和 Azkaban Executor 服务的时候,都依赖 conf 目录下的 log4j.properties 日志文件用于日志输出,所以还需要在这俩个服务的 conf 目录下编写配置 log4j.properties 日志文件,内容如下:

log4j.rootLogger=INFO,Console
log4j.logger.azkaban=INFO,server
log4j.appender.server=org.apache.log4j.RollingFileAppender
log4j.appender.server.layout=org.apache.log4j.PatternLayout
log4j.appender.server.File=logs/azkaban-server.log
log4j.appender.server.layout.ConversionPattern= \
           %d{
    
    yyyy/MM/dd HH:mm:ss.SSS Z} %p [%c{
    
    1}] [Azkaban] %m%n
log4j.appender.server.MaxFileSize=102400MB
log4j.appender.server.MaxBackupIndex=2
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern= \
           %d{
    
    yyyy/MM/dd HH:mm:ss.SSS Z} %p [%c{
    
    1}] [Azkaban] %m%n

在上述文件当中,通过 log4j.appender.server.File=logs/azkaban-server.log 将服务启动日志文件的存放路径配置在了对应服务解压目录下的 azkaban-server.log 文件中(服务器启动会自动创建目录文件)。

注意:使用 Azkaban 不同版本进行编译后生成的文件下,并没有统一类似 bin、web、lib、conf、extlib 和 plugins 文件夹,这个需要根据不同版本实际情况进行添加,并对 conf 目录下文件进行配置。

Azkaban官网文档


3.Azkaban Executor 服务安装配置(执行器服务)

Azkaban Web 服务器的安装配置后,还需要对 Azkaban Executor 服务器进行安装配置,其整个安装配置过程与 Azkaban Web 服务器的暗转配置类似,步骤如下。

先将之前编译好的 Executor 服务安装包进行解压到 /usr/azkaban 目录下
在这里插入图片描述

tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C /usr/azkaban/

执行上述命令后会在 /usr/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT 目录下产生 bin目录和 lib目录文件,同 Web 服务安装包一样,还缺少了 conf、extlib、plugins 3个文件目录 (exec 执行器服务不需要 web 文件夹),这里只需要从前面配置好的 Azkaban Web 服务器的安装文件下进行复制即可。如下图所示:
在这里插入图片描述

之后只需要修改当前服务的 conf 目录下的 azkaban.properties 文件,移除 jetty 服务配置,同时在该文件中对 Executor 进行编辑设置,主要修改内容如下:
在这里插入图片描述

将这段内容添加到末尾:

# Azkaban Executor settings
# 设置最大线程数
executor.maxThreads=50
# 设置Executor端口
executor.port=12321
# 设置流动线程数
executor.flow.threads=30

在这里插入图片描述
至此,整个 Azkaban 工作流管理器的安装配置就完成了。

需要说明的是,由于版本的不同,Azkaban 的配置方式和结果可能略有不同,但必须要根据使用的 Azkaban 版本为准,并且在后续部署后能够正确访问。



Azkaban 启动测试


1.启动 Azkaban Executor 服务

在 Azkaban Executor 的解压目录下执行如下命令:

bin/start-exec.sh

执行上述命令后启动 Azkaban Executor 服务,此时可以通过 ll 命令查看当前目录下的文件内容,也或者通过 jps 命令产看进程。


2.启动 Azkaban Web 服务

与 Executor 服务一样,在解压目录下,执行如下命令:

bin/start-web.sh

同样的方式查看服务启动状态。

而且二者关闭服务的时候也是在 bin 目录下有 shutdown-exec.sh 命令


3.访问 Azkaban UI

SSL 地址
禁用 http: //master:8081
启用 https: //master:8443

8081 就是 azkaban.properties 中默认指定配置的 jetty.port=8081。前面配置中,启用了 SSL ,而且配置的 端口是 8443 。

进入 UI 页面后,输入 admin、admin 登陆。

在这里插入图片描述

部署完成,测试完成!

猜你喜欢

转载自blog.csdn.net/shuyv/article/details/114539625