首页 > 技术文章 > azkaban3.34.0源码安装部署

lebaishi 2021-04-22 18:59 原文

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

image

2.编译源码

下载后将对应的tar包上传到集群的任意一台主机,我这里是上传到hadoop01

2.1 解压源码包
tar -zxvf azkaban-3.34.0.tar.gz

解压后目录结构如下所示:
image

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

image

#建议修改编译时的maven远程仓库,否则下载会很慢,我这里配置的是aliyun仓库
vim /soft/azkaban-3.34.0/build.gradle

image

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数据库
image

将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;

image

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

image

三.配置azkaban邮箱告警

1. 开通邮箱smtp

我这里使用的163邮箱进行的设置.
开通位置如下:
image

这时候会提示有授权码.要记住这个授权码,后面会用到.

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

添加以下内容:
image

接收邮箱地址也可以不填,在页面中可以自行配置.

3. 测试邮箱告警功能

  • 创建测试项目
    image

  • 创建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项目中:
    image

image

如果在azkaban配置文件和job文件都没有配置接收邮件的邮箱,也可在azkaban任务界面进行配置:
image

我这里在执行任务时报了两个错:

  • azkaban.native.lib问题:
    image

解决:

vim /opt/azkaban3.34.0/azkaban-web-server/plugins/jobtypes/commonprivate.properties

# 添加以下内容
execute.as.user=false
azkaban.native.lib=false

# 分发到exec server,并重启azkaban
  • 用户问题
    image
    这里是azkaban限制了不能已root用户和azkaban用户来提交任务
    所以我创建了test用户用于测试,后面在用test用户执行任务时就没有报这个错了

添加用户的方式通过编辑azkaban-users.xml进行新增用户
image

执行任务后可以收到邮件,邮件内容如下所示:
image

到此azkaban任务邮箱告警就已完成.

四.二次开发azkaban实现短信告警

第四节还未完成验证,待补充..................

推荐阅读