文章目录
azkaban工作流调度器前言
Azkaban是由Linkedin公司推出的一个批量工作流任务轻量级调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程, 可定时, Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流
Azkaban3.0+版本提供了三种安装模式:
1.solo-server mode:单机模式,适合开发使用。使用内置的h2数据库,web server和executor server在同一个进程里。
2.two server mode:双机模式,适合生产环境。使用主从的MySQL做元数存储,web server和executor server在不同的进程中,更新和升级对用户的影响较小;
3.multiple-executor mode:多executor模式,最严格的生产环境。使用主从的MySQL做元数据存储。理想情况下,web server和executor server在不同的主机上运行,以便升级维护不影响用户。这种模式为azkaban提供了高可用可扩展的功能。
提示:因为需求量使用效能不多,但linux crontab又不能满足web操作,所以目前只提供单机模式教学,下面案例可供参考,日后有时间再补充。
一、Azkanban下载?
下载源码
git clone https://github.com/azkaban/azkaban.git
或是到这边下载 https://github.com/azkaban/azkaban/releases
如果以上比较慢,还可以使用下面所述去下载,但要指定版本:
wget https://github.com/azkaban/azkaban/archive/3.90.0.tar.gz
我们这里选用azkaban3.90.0这个版本自己进行重新编译,编译完成之后得到我们需要的 安装包进行安装,编译需要使用jdk1.8的版本来进行编译,如果编译服务器使用的jdk版本 是1.7的,记得切换成jdk1.8。
#解压缩目录位置/opt/servers,目前所在层级/opt
tar -zxvf 3.90.0.tar.gz -C ./servers/
cd /opt/servers/azkaban-3.90.0
#Azkaban 的编译过程需要用 Git 下载部分 JAR 包,所以需要预先安装 Git:
yum -y install git
#把gcc当成c语言编译器, g++当成c++语言编译器
yum ‐y install gcc‐c++
优化编译速度,查看azkaban-3.90.0/gradle/wrapper/gradle-wrapper.properties文件,
vim azkaban-3.90.0/gradle/wrapper/gradle-wrapper.properties
可以看到以下这一行,可以看到依赖的gradle为4.6版本
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
从https://gradle.org/releases/下载对应版本的gradle的zip包,我们这次安装gradle-4.6-all.zip如下图选择complete,放到/data/azkaban-3.90.0/gradle/wrapper目录下。
然后修改gradle-wrapper.properties文件的最后一行,改为:
# distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
distributionUrl=gradle-4.6-all.zip
# 将gradlew 进行编译 第一次运行时,此过程时间会比较长
# -x test 表示跳过测试
./gradlew build installDist ‐x test
如果出现下图就是失败
这次编译就使用下面这句语句,但切记编译失败,需要清理后,再次编译
#先清理
./gradlew clean
#在编译选择其中一个命令
./gradlew build
./gradlew build installDist
./gradlew build installDist -x test
./gradlew distTar
914JJ 最终是用是./gradlew build installDist -x test 编译成功的。成功会出现下面图形:
因为要下载大量的 Jar 包,下载速度根据网络情况而定,我是挺快,但传闻下载不会很快,看其他博主说「编译可能会被强行终止,这时候重复执行编译命令即可,gradle 会把已经下载的 JAR 缓存到本地,所以不用担心会重复下载 JAR 包。」
二、安装配置
编译完成,我们得到如下文件
azkaban-exec-server存放目录
/opt/servers/azkaban-3.90.0/azkaban‐exec‐server/build/distributions
azkaban-web-server存放目录
/opt/servers/azkaban-3.90.0/azkaban‐web‐server/build/distributions
azkaban-solo-server存放目录
/opt/servers/azkaban-3.90.0/azkaban‐solo‐server/build/distributions
azkaban two server模式下需要的C程序在这个路径下面
/opt/servers/azkaban-3.90.0/azkaban‐solo‐server/build/distributions
数据库脚本文件在这个路径下面
/opt/servers/azkaban-3.90.0/azkaban‐db/build/install/azkaban‐db
1.Azkaban 单服务模式安装与使用
1.拷贝我们所需的文件并解压
代码如下(示例):分别复制下面方框内4个文件夹里编译后的.tar.gz文件到 /data/azkaban,并解压
mkdir -p /data/azkaban
cd /data/azkaban-3.90.0
cp azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz /data/azkaban
cp azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz /data/azkaban
cp azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz /data/azkaban
cp azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz /data/azkaban
cd /data/azkaban
tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz -C /data/azkaban/
tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C /data/azkaban/
tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C /data/azkaban/
tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C /data/azkaban/
我们可以在/data/azkaban/看到解压后所需要的数据信息。
2.Azkaban 单机服务模式安装与使用
所需软件 : azkaban-solo-server,azkaban 的solo server使用的是一个单节点的模式来进行启动服务的,只需要一个 azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz的安装包即可启动,所有的数据信息都是 保存在H2这个azkaban默认的数据当中,
2.1 修改时区配置文件
cd /data/azkaban/azkaban-solo-server-0.1.0-SNAPSHOT/conf/
vim azkaban.properties
修改时区。因为我们的linux 时区设定为上海,所以最好要保持时区上的一致性。
#default.timezone.id=America/Los_Angeles
default.timezone.id=Asia/Shanghai
有些关键特别提出来说明
#页面访问的端口号
jetty.port=8081
#单机版所保持的数据信息类型,位置
database.type=h2
h2.path=./h2
2.2修改commonprivate.properties配置文件
cd /data/azkaban/azkaban-solo-server-0.1.0-SNAPSHOT/plugins/jobtypes
vim commonprivate.properties
打开文件添加下面讯息:
execute.as.user=false
#添加这一行是避免内存检查
memCheck.enabled=false
2.3 启动solo-server
cd /data/azkaban/azkaban‐solo‐server‐0.1.0‐SNAPSHOT
#啟動
bin/start‐solo.sh
#斷掉
bin/shutdown-solo.sh
如果不回到solo目录会出现Cannot find ‘database.properties’
可以参考链接去修正bug: link.
如果出现 Error: HADOOP_HOME is not set. Hadoop job types will not run properly. 就在/etc/profile设定HADOOP_HOME
如果出现plugin path plugins/triggers doesn’t exist!就出现对应的目录
如果出现 SocketConnector@0.0.0.0:8888: java.net.BindException: Address already in use,就是发现port 冲突,改azkaban.properties文件中的port
如果成功就可以输入jps 看到AzkabanSingleServer 的job
2.3 浏览器页面访问
浏览器页面访问
http://node03:8081/
如果出现 需要在 ./plugins 的文件夹下手动生成一个 triggers 的目录,否则启动日志会报错。但如果添加 triggers 文件夹后,登录页面时 500 并提示 Velocity could not be initialized! 那就删除 ./plugins/tirggers 文件夹。><"