文章目录
前言
本文使用的Azkaban版本是3.84.4源码包
从此处下载源码包https://github.com/azkaban/azkaban
如图所示,选择版本
一、Azkaban是什么?
Azkaban是一个由LinkedIn创建的批处理工作流作业调度器,用于运行Hadoop作业。Azkaban通过作业依赖关系解决排序问题,并提供一个易于使用的web用户界面来维护和跟踪您的工作流程。
特性
- Distributed Multiple Executor | 分布式多执行器
- MySQL Retry | MySQL 重试
- Friendly UI | 友好的用户界面
- Conditional Workflow | 条件工作流
- Data Triggers | 数据触发器
- High Security | 高安全性
- Support plug-in extensions, from Web UI to job Execution | 支持插件扩展,从Web UI到作业执行
- Full Authorship management system | 完整的作者管理系统
二、从源代码构建
1、 Azkaban 构建使用 Gradle(使用 Gradle 包装器 gradlew 运行时自动下载)并且需要 Java 8 或更高版本。
在虚拟机的azkaban根目录中使用gradlew命令构建时出现拒绝连接的错误(解压完,什么配置都没改的情况下)
先跳过此构建步骤,完成以下这几步操作,最后再构建
./gradlew build
查看Azkaban根目录的这个文件,这个文件用于配置 gradle 的全局属性。(修改一下镜像源,下载jar包的速度会变快很多)
在这个文件的最底下添加如下代码,将 镜像源 换成阿里云的Maven镜像源
vim gradle.properties
# 阿里云 Maven 镜像源
repositories.grails.default = https://maven.aliyun.com/repository/public
# 可选项,添加清华开源镜像源
repositories.grails.default.1 = https://mirrors.tuna.tsinghua.edu.cn/maven/repos/public
# 可选项,添加 Maven 中央仓库镜像源
repositories.grails.default.2 = https://repo.maven.apache.org/maven2
在azkaban-3.84.4/gradle/wrapper
的路径下查看gradle-wrapper.properties
文件,发现会自动下载gradle-4.6-all.zip这个包,但是速度很慢。(另辟蹊径,直接去官网下了一个对应的包,将这个包放在相同的目录底下,将这个文件的内容修改,指定使用本地文件)修改后的文件如第二张图
gradle-4.6-all.zip文件放的位置
gradle 构建此项目,还需要引入git的上面的一些jar包,需要下载一个git
yum install git
切换到azkaban的azkaban-web-server
目录下,修改build.gradle
文件的这个内容,将其换源,这里使用的是清华源https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/
开始编译
./gradlew build installDist -x test
(如果出现编译失败,多执行几次该命令,因为网络等各种问题,出现编译失败属于是正常现象,完全下好大概需要挺久,下载的jar包很多)
出现关于以下错误时,在/etc/profile
添加nodejs的环境变量,路径在azkaban的根目录azkaban-web-server/build/nodejs/node-v8.10.0-linux-x64
这个路径加入环境变量中
# 注意路径,根据实际情况来写,这个只是一个参考
export NPM_HOME=/opt/module/azkaban-3.84.4/azkaban-web-server/build/nodejs/node-v8.10.0-linux-x64
export PATH=$NPM_HOME/bin:$PATH
若还出现问题就是网络问题了,多试几次,此贴是实际经历过来的,多构建几次【附上成功截图】
2、Azkaban部署
2.1、单机单服务模式(solo 服务器模式)
单服务器模式下,数据库是嵌入式 H2,并且 Web 服务器和执行器服务器都在同一进程中运行。
1.克隆仓库
git clone https://github.com/azkaban/azkaban.git
-2.启动服务器(上面步骤已经成功的构建好了azkaban)_
# 在 azkaban 的根目录下切换到 azkaban-solo-server/build/distributions 目录底下
cd azkaban-solo-server/build/distributions
# 解压一下 azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz => 解压tar.gz后缀的文件
tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz
# 解压好之后,进入这个文件目录,执行这个命令,启动服务器
./bin/start-solo.sh
jps服务里面出现这个说明启动成功了,再进入http://localhost:8081/
地址查看,账号密码查看这个文件conf/azkaban-users.xm
,要修改账号和密码,也是修改这个文件的内容
/user
如果要添加账号的话 => username和password属性是必填的,其他的选填,要使用<user />标签
//其他关于group和roles的内容自查
<azkaban-users>
<user username="myusername" password="mypassword" roles="a" groups="mygroup" / >
<user username="myusername2" password="mypassword2" roles="a, b" groups="ga, gb" / >
...
</azkaban-users>
# 切换到 azkaban-solo-server-0.1.0-SNAPSHOT 这个文件的根目录,执行此命令关掉 solo 服务
./bin/shutdown-solo.sh
3.在此单机服务的azkaban solo服务器就已完全配好,默认情况下,solo服务器会监听8081端口,打开浏览器查看 http://localhost:8081/
这个地址
2.2、分布式多执行器模式
多执行器模式适用于最严重的生产环境。其数据库应由具有主从设置的 MySQL 实例支持。Web 服务器和执行器服务器最好在不同的主机上运行,以便升级和维护不会影响用户。这种多主机设置给 Azkaban 带来了强大且可扩展的方面。
配置数据库【mysql-5.7】
# 需要在 MySQL数据库中为azkban创建一个数据库
create database azkaban;
# 给azkaban设置一个用户用于管理azkaban数据库,username不要使用 azkaban 命名,密码不要设置的太简单,mysql数据库对用户的密码有严格策略要求,要包含大小写字母、数字和符号,要修改密码强度的可以去看我装mysql的文章,有介绍
create user 'userazk'@'%' identified by 'Abc123...';
# 给这个用户设置 增删查改 权限
grant select,insert,update,delete on azkaban.* to 'userazk'@'%' with grant option;
更改mysql数据库对于数据包大小的要求,vim /etc/my.cnf
在【mysqld】底下任意位置写进去,默认情况下,MySQL 的允许数据包大小可能非常低,修改完用这个命令重新启动一下MySQL /sbin/service mysqld restart
max_allowed_packet=1024M
创建 azkaban 表,执行构建过程中生成的sql,在
azkaban-3.84.4/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT
路径底下执行以下命令
# 直接在外部终端执行sql语句
mysql -uroot -p azkaban < create-all-sql-0.1.0-SNAPSHOT.sql
# 在mysql命令行终端执行外部sql代码,要先切换到azkaban数据库
use azkaban;
source 【这里填sql的完整路径】
- 配置 执行器服务器(这里只使用了一个执行器,可以通过分发部署多个执行器安装分发包来设置多个执行器。)
切换到azkaban-exec-server/build/distributions
这个目录下,解压tar文件,解压完进入该文件夹,修改conf/azkaban.properties
这个文件关于mysql的相关设置,与上面的设置相对应,修改user=userazk
和password=Abc123...
启动执行器服务器,在azkaban-exec-server-0.1.0-SNAPSHOT
目录下执行以下启动命令,启动成功后,jps会显示如下进程,此时,执行器就可以用了
./bin/start-exec.sh
# 启动执行器完成之后使用以下命令激活执行器,在azkaban-exec-server-0.1.0-SNAPSHOT根目录下执行,36305是博主执行器给出的端口,具体的在`azkaban-exec-server-0.1.0-SNAPSHOT`根目录文件底下有,启动完执行器之后会出现该文件,查看该文件,然后把端口替换掉博主写的端口
curl -G "localhost:【填自己的端口号】/executor?action=activate" && echo
执行器激活成功的反馈
配置web服务器
在azkaban根目录底下切换到
azkaban-web-server/build/distributions
此目录下,解压tar文件,进入解压后的文件夹目录
修改conf/azkaban.properties
文件的mysql 用户名和密码
如图:
要自定义azkban的用户和密码,修改azkaban-users.xml
文件的内容,怎么添加,上面单机模式中有介绍【此处web服务器的配置没有修改,使用的默认的用户和密码均为azkban
】
启动 web 服务器,在
azkaban-web-server-0.1.0-SNAPSHOT
根目录底下使用此命令,启动成功会有如图的jps进程
./bin/start-web.sh
打开网页进入
http://localhost:8081/
网页,如图成功进入
总结
安装azkaban还是有点繁琐的,多多跟博主沟通交流,给博主一点更文的动力→→→→→→→