文章目录
一、Azkaban
Azkaban 是由 Linkedin 公司推出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的 key:value 对的方式,通过配置中的 Dependencies 来设置依赖关系。Azkaban 使用 job 配置文件建立任务之间的依赖关系,并提供一个易于使用的 web 用户界面维护和跟踪你的工作流。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-05vCtaRE-1645612618765)(.\Azkaban\Azkaban架构.png)]
- **AzkabanWebServer:**AzkabanWebServer 是整个Azkaban 工作流系统的主要管理者,它用户登录认证、负责 project 管理、定时执行工作流、跟踪工作流执行进度等一系列任务。
- **AzkabanExecutorServer:**负责具体的工作流的提交、执行,它们通过 mysql 数据库来协调任务的执行。
- **关系型数据库(MySQL):**存储大部分执行流状态, AzkabanWebServer 和AzkabanExecutorServer 都需要访问数据库。
二、安装部署
Azkaban的下载地址:http://azkaban.github.io/downloads.html
1、安装包准备
安装Azkaban之前需要安装mysql,之后需要准备三个组件包,其中version代表版本号,其具体如下:
- azkaban-web-server-version.tar.gz: Azkaban Web 服务器
- azkaban-executor-server-version.tar.gz: Azkaban 执行服务器
- **azkaban-sql-script-version.tar.gz:**Azkaban的sql 执行脚本
2、安装Azkaban
1.解压安装包
#切换到指定文件夹中
cd /opt/software
#创建文件夹
mkdir azkaban
#切换到安装包所在文件夹执行解压命令
#解压Azkaban Web服务器
tar -zxvf azkaban-web-server-version.tar.gz -C /opt/software/azkaban/
#解压Azkaban执行服务器
tar -zxvf azkaban-executor-server-version.tar.gz -C /opt/software/azkaban/
#解压Azkaban的sql执行脚本
tar -zxvf azkaban-sql-script-version.tar.gz -C /opt/software/azkaban/
2.文件重命名
#切换到指定文件夹中
cd /opt/software/azkaban
#文件夹重命名
mv azkaban-web-version/ server
mv azkaban-executor-version/ executor
3.azkaban脚本导入
#登录mysql
mysql -uroot -pok
#创建Azkaban数据库
mysql> create database azkaban;
#切换到Azkaban数据库
mysql> use azkaban;
#Azkaban脚本导入,其中version为Azkaban的版本号
mysql>source /opt/software/azkaban/azkaban-version/create-all-sql-version.sql
3、生成密钥对
Keytool 是 java 数据证书的管理工具,使用户能够管理自己的公/私钥对及相关证书。
- -keystore 指定密钥库的名称及位置(产生的各类信息将存在.keystore 文件中)
- -genkey(或者-genkeypair) 生成密钥对
- -alias 为生成的密钥对指定别名,如果没有默认是 mykey
- -keyalg 指定密钥的算法 RSA/DSA 默认是 DSA
#生成秘钥对
keytool -keystore keystore -alias jetty - genkey -keyalg RSA
#--------------------------------------------------------------------------
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么? [Unknown]:
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么? [Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的省/市/自治区名称是什么? [Unknown]:
该单位的双字母国家/地区代码是什么?
[Unknown]:
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown 是否正确?
[否]: y
输入 <jetty> 的密钥口令
(如果和密钥库口令相同, 按回车):
再次输入新口令:
#--------------------------------------------------------------------------
#将keystore拷贝到azkaban web服务器根目录中
mv keystore /opt/module/azkaban/server/
4、相关配置
1.修改时区
#修改时区
tzselect
#------------------------------------------------------------------------------------
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
1) Africa
2) Americas
3) Antarctica
4) Arctic Ocean
5) Asia
6) Atlantic Ocean
7) Australia
8) Europe
9) Indian Ocean
10) Pacific Ocean
11) none - I want to specify the time zone using the Posix TZ format.
#? 5
Please select a country.
1) Afghanistan 18) Israel 35) Palestine
2) Armenia 19) Japan 36) Philippines
3) Azerbaijan 20) Jordan 37) Qatar
4) Bahrain 21) Kazakhstan 38) Russia
5) Bangladesh 22) Korea (North) 39) Saudi Arabia
6) Bhutan 23) Korea (South) 40) Singapore
7) Brunei 24) Kuwait 41) Sri Lanka
8) Cambodia 25) Kyrgyzstan 42) Syria
9) China 26) Laos 43) Taiwan
10) Cyprus 27) Lebanon 44) Tajikistan
11) East Timor 28) Macau 45) Thailand
12) Georgia 29) Malaysia 46) Turkmenistan
13) Hong Kong 30) Mongolia 47) United Arab Emirates
14) India 31) Myanmar (Burma) 48) Uzbekistan
15) Indonesia 32) Nepal 49) Vietnam
16) Iran 33) Oman 50) Yemen
17) Iraq 34) Pakistan
#? 9
Please select one of the following time zone regions.
1) Beijing Time
2) Xinjiang Time
#? 1
The following information has been given:
China
Beijing Time
Therefore TZ='Asia/Shanghai' will be used.
Local time is now: Mon Feb 14 18:32:25 CST 2022.
Universal Time is now: Mon Feb 14 10:32:25 UTC 2022.
Is the above information OK?
1) Yes
2) No
#? 1
You can make this change permanent for yourself by appending the line
TZ='Asia/Shanghai'; export TZ
to the file '.profile' in your home directory; then log out and log in again.
Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Asia/Shanghai
#------------------------------------------------------------------------------------
#拷贝时区覆盖本地时区配置
cp /usr/usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#同步时间
sudo date -s '2022-02-14 17:39:30'
2.Web服务器配置
#切换到azkaban的conf文件中
cd /opt/software/azkaban/azkaban_version/conf
#编辑配置文件,修改以下内容
vim azkaban.properties
#-------------------------------------------------------------
#Azkaban Personalization Settings
#服务器 UI 名称,用于服务器上方显示的名字
azkaban.name=Test
#描述
azkaban.label=My Local Azkaban
#UI 颜色
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
#默认 web server 存放 web 文件的目录
web.resource.dir=/opt/module/azkaban/server/web/
#默认时区,已改为亚洲/上海 默认为美国
default.timezone.id=Asia/Shanghai
#Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
#用户权限管理默认类(绝对路径)
user.manager.xml.file=/opt/software/azkaban/azkaban_version/conf/azkaban-users.xml
#Loader for projects
#global 配 置 文 件 所 在 位 置 ( 绝 对 路 径 )
executor.global.properties=/opt/software/azkaban/azkaban_version/conf/global.pro perties
azkaban.project.dir=projects
#数据库类型
database.type=mysql
#端口号
mysql.port=3306
#数据库连接 IP
mysql.host=single01
#数据库实例名
mysql.database=azkaban
#数据库用户名
mysql.user=root
#数据库密码
mysql.password=ok
#最大连接数
mysql.numconnections=100
# Velocity dev mode velocity.dev.mode=false
# Azkaban Jetty server properties.
# Jetty 服务器属性.
#最大线程数
jetty.maxThreads=25
#Jetty SSL 端口
jetty.ssl.port=8443
#Jetty 端口
jetty.port=8081
#SSL 文件名(绝对路径)
jetty.keystore=/opt/software/azkaban/server/keystore
#SSL 文件密码
jetty.password=000000
#Jetty 主密码与 keystore 文件相同
jetty.keypassword=000000
#SSL 文件名(绝对路径)
jetty.truststore=/opt/module/azkaban/server/keystore
#SSL 文件密码
jetty.trustpassword=000000
# Azkaban Executor settings executor.port=12321
# mail settings mail.sender= mail.host= job.failure.email= job.success.email=
lockdown.create.projects=false
cache.directory=cache
#------------------------------------------------------------------------------
3.增加管理员用户
#编辑用户配置文件
vim azkaban-users.xml
输入以下内容
<azkaban-users>
<user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
<user username="metrics" password="metrics" roles="metrics"/>
<user username="admin" password="admin" roles="admin,metrics"/>
<role name="admin" permissions="ADMIN" />
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
4.执行服务器配置
#切换至指定文件夹中
cd /opt/software/azkaban/executor/conf
#编辑配置文件,修改以下内容
vim azkaban.properties
#------------------------------------------------------------------------------------
#Azkaban
#时区default.timezone.id=Asia/Shanghai
# Azkaban JobTypes Plugins
#jobtype 插件所在位置
azkaban.jobtype.plugin.dir=plugins/jobtypes
#Loader for projects
executor.global.properties=/opt/software/azkaban/executor/conf/global.properties
azkaban.project.dir=projects
database.type=mysql
mysql.port=3306
mysql.host=single01
mysql.database=azkaban
mysql.user=root
mysql.password=ok
mysql.numconnections=100
# Azkaban Executor settings
#最大线程数
executor.maxThreads=50
#端口号(如修改,请与 web 服务中一致)
executor.port=12321
#线程数
executor.flow.threads=30
#------------------------------------------------------------------------------------
5.启动服务
#切换到指定文件夹中
cd /opt/software/azkaban/executor
#启动Executor服务器
bin/azkaban-executor-start.sh
#切换到指定文件夹中
cd /opt/software/azkaban/server
#启动Web 服务器
bin/azkaban-web-start.sh