azkaban3.34.0源码安装部署
azkaban安装部署文档
一.下载编译源码
1.下载源码
源码下载 : 在github上下载对应版本的azkaban源码,我这里下载的是azkaban3.34.0
传送门 : https://github.com/azkaban/azkaban/archive/refs/tags/3.34.0.tar.gz
还需要下载 gradle-4.1-all.zip
传送门 : https://services.gradle.org/distributions/gradle-4.1-all.zip
2.编译源码
下载后将对应的tar包上传到集群的任意一台主机,我这里是上传到hadoop01
2.1 解压源码包
tar -zxvf azkaban-3.34.0.tar.gz
解压后目录结构如下所示:
2.2 安装编译环境需要的依赖
yum -y install make gcc-c++ cmake bison-devel ncurses-devel
# 安装git
yum install -y git
# 将gradle-4.1-all.zip放到对应的文件夹并配置gradle-4.1-all.zip
cp /soft/gradle-4.1-all.zip /soft/azkaban-3.34.0/gradle/wrapper/
vim gradle/wrapper/gradle-wrapper.properties
#建议修改编译时的maven远程仓库,否则下载会很慢,我这里配置的是aliyun仓库
vim /soft/azkaban-3.34.0/build.gradle
2.3 编译
# -x test 跳过测试,这样快很多,也可以不跳过
# 在azkaban目录下执行以下编译命令
./gradlew build installDist -x test
编译完以后,我们需要四个目录,
azkaban-db,存放建表的语句
azkaban-exec-server,执行服务
azkaban-solo-server,solo模式使用(本次不需要)
azkaban-web-server,web服务
二.安装部署azkaban
看官网分为两种运行模式:
- solr server模式运行
- 以 Multi Executor Server 模式运行
我们这里选择第二种运行模式
按照官网一步一步开始部署:
1. 安装配置mysql
此处延用部署CDH集群时使用的mysql(安装mysql步骤省略)
2. 创建azkaban数据库并配置
创建azkaban数据库
将create-all-sql-0.1.0-SNAPSHOT.sql脚本上传到mysql服务器
在hadoop01上执行scp命令
scp /soft/azkaban-3.34.0/azkaban-db/build/sql/create-all-sql-0.1.0-SNAPSHOT.sql root@mysql:/root/
进入mysql命令行:
use azkaban;
source /root/create-all-sql-0.1.0-SNAPSHOT.sql
# 执行完之后查看表
show tables;
3.配置azkaban-web-server
# 没有conf目录就创建conf目录
cd /soft/azkaban-3.34.0/azkaban-web-server/build/install/azkaban-web-server/conf
# 编辑配置文件
vim azkaban.properties
######################添加以下内容############################
azkaban.name=myazkaban
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=/soft/azkaban-3.34.0/azkaban-web-server/build/install/azkaban-web-server/web
# 最好用绝对路径,不然界面可能会诡异的丑
default.timezone.id=Asia/Shanghai
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=/soft/azkaban-3.34.0/azkaban-web-server/build/install/azkaban-web-server/conf/azkaban-users.xml
# Loader for projects
#executor.global.properties=conf/global.properties
azkaban.project.dir=projects
database.type=h2
h2.path=./h2
h2.create.tables=true
# Velocity dev mode
velocity.dev.mode=false
# db
database.type=mysql
mysql.port=3306
mysql.host=192.168.127.188
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100
# Azkaban Jetty server properties.
jetty.use.ssl=false
jetty.maxThreads=25
jetty.port=8058
# 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=/soft/azkaban-3.34.0/azkaban-web-server/build/install/azkaban-web-server/plugins/jobtypes
# 在conf目录下创建user配置文件
vim azkaban-user.xml
##########################添加以下内容#############################
<azkaban-users>
<user groups="azkaban" password="azkaban" roles="admin" username="azkaban" />
<role name="admin" permissions="ADMIN" />
</azkaban-users>
# 创建log4j配置文件
vim log4j.properties
#####################添加以下内容######################
log4j.rootLogger=DEBUG,C
log4j.appender.C=org.apache.log4j.ConsoleAppender
log4j.appender.C.Target=System.err
log4j.appender.C.layout=org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
4.配置azkaban-exec-server
将azkaban-web-server中的配置文件复制一份到azkaban-exec-server中
cp /soft/azkaban-3.34.0/azkaban-web-server/build/install/azkaban-web-server/conf /soft/azkaban-3.34.0/azkaban-exec-server/build/install/azkaban-exec-server/
5.启动azkaban,查看web界面
先启动azkaban-exec-server
可以采用后台启动
cd /soft/azkaban-3.34.0/azkaban-exec-server/build/install/azkaban-exec-server/bin
nohup ./azkaban-executor-start.sh & > azkaban.log
先启动azkaban-web-server
可以采用后台启动
cd /soft/azkaban-3.34.0/azkaban-web-server/build/install/azkaban-web-server/bin
nohup ./azkaban-web-start.sh & > azkaban.log
查看azkabanweb界面
http://hadoop01:8058
三.配置azkaban邮箱告警
1. 开通邮箱smtp
我这里使用的163邮箱进行的设置.
开通位置如下:
这时候会提示有授权码.要记住这个授权码,后面会用到.
2. 设置邮件服务器邮箱
编辑web和exec server 的azkaban配置文件
由于之前基于源码安装的目录太深,我把对应的azkaban路径拷贝到了自建的目录下
# 创建azkaban文件夹
mkdir /opt/azkaban3.34.0
# 将web和exec拷贝到azkaban文件夹下
cp -r /soft/azkaban-3.34.0/azkaban-web-server/build/install/azkaban-web-server /opt/azkaban3.34.0/
cp -r /soft/azkaban-3.34.0/azkaban-exec-server/build/install/azkaban-exec-server /opt/azkaban3.34.0/
# 修改azkaban配置文件,并将配置文件中的路径改为移动之后的文件路径
vim /opt/azkaban3.34.0/azkaban-web-server/conf/azkaban.properties
添加以下内容:
接收邮箱地址也可以不填,在页面中可以自行配置.
3. 测试邮箱告警功能
-
创建测试项目
-
创建job文件
# 新建test1.job文件,添加以下内容
config:
failure.emails: 19925176897@163.com
success.emails: 19925176897@163.com
nodes:
- name: test1
type: command
config:
command: echo "this is a azkaban mail test"
- 打包上传
将这个文件打包成zip包,并上传到test_mail项目中:
如果在azkaban配置文件和job文件都没有配置接收邮件的邮箱,也可在azkaban任务界面进行配置:
我这里在执行任务时报了两个错:
- azkaban.native.lib问题:
解决:
vim /opt/azkaban3.34.0/azkaban-web-server/plugins/jobtypes/commonprivate.properties
# 添加以下内容
execute.as.user=false
azkaban.native.lib=false
# 分发到exec server,并重启azkaban
- 用户问题
这里是azkaban限制了不能已root用户和azkaban用户来提交任务
所以我创建了test用户用于测试,后面在用test用户执行任务时就没有报这个错了
添加用户的方式通过编辑azkaban-users.xml进行新增用户
执行任务后可以收到邮件,邮件内容如下所示:
到此azkaban任务邮箱告警就已完成.
四.二次开发azkaban实现短信告警
第四节还未完成验证,待补充..................