azkaban官网:
https://azkaban.github.io/
Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
作者:FantJ
链接:https://www.jianshu.com/p/c7d6bf6191e7
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
简单的任务调度:直接使用linux的crontab来定义;
复杂的任务调度:开发调度平台或使用现成的开源调度系统,比如ooize、azkaban、airflow等
对市面上最流行的两种调度器,给出以下详细对比,以供技术选型参考。总体来说,ooize相比azkaban是一个重量级的任务调度系统,功能全面,但配置使用也更复杂。如果可以不在意某些功能的缺失,轻量级调度器azkaban是很不错的候选对象。
详情如下:
功能
两者均可以调度mapreduce,pig,java,脚本工作流任务
两者均可以定时执行工作流任务
工作流定义
Azkaban使用Properties文件定义工作流
Oozie使用XML文件定义工作流
工作流传参
Azkaban支持直接传参,例如 i n p u t O o z i e 支 持 参 数 和 E L 表 达 式 , 例 如 {input} Oozie支持参数和EL表达式,例如 inputOozie支持参数和EL表达式,例如{fs:dirSize(myInputDir)}
定时执行
Azkaban的定时执行任务是基于时间的
Oozie的定时执行任务基于时间和输入数据
资源管理
Azkaban有较严格的权限控制,如用户对工作流进行读/写/执行等操作
Oozie暂无严格的权限控制
工作流执行
Azkaban有两种运行模式,分别是solo server mode(executor server和web server部署在同一台节点)和multi server mode(executor server和web server可以部署在不同节点)
Oozie作为工作流服务器运行,支持多用户和多工作流
工作流管理
Azkaban支持浏览器以及ajax方式操作工作流
Oozie支持命令行、HTTP REST、Java API、浏览器操作工作流
1、下载源码包,选择版本是3.15.0
cd /export/softwares/
wget https://github.com/azkaban/azkaban/archive/3.51.0.tar.gz
2、解压源码包
tar -zxvf 3.51.0.tar.gz -C ../servers/
3、进行编译
cd /export/servers/azkaban-3.51.0/
yum -y install git
yum -y install gcc-c++
./gradlew build installDist -x test
4、编译之后安装包的存放位置
1、解压azkaban-solo-server
将编译后得到的azkaban-solo-server复制到/export/softwares
cd /export/softwares
tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C ../servers/
2、修改两个配置文件
(1)修改azkaban.properties
cd /export/servers/azkaban-solo-server-0.1.0-SNAPSHOT/conf
vim azkaban.properties
修改内容:
default.timezone.id=Asia/Shanghai
(2)修改commonprivate.properties
cd /export/servers/azkaban-solo-server-0.1.0-SNAPSHOT/plugins/jobtypes
vim commonprivate.properties
修改内容:
execute.as.user=false #修改
memCheck.enabled=false #添加
3、启动solo-server
cd /export/servers/azkaban-solo-server-0.1.0-SNAPSHOT
bin/start-solo.sh
注意,不要cd到azkaban-solo-server-0.1.0-SNAPSHOT的bin目录库下直接运行start-solo.sh
以下是一台机器进行azkaban多服务模式安装的操作,其余机器的安装与一台机器的安装相同
1、从编译后的文件中将以下复制到/export/softwares/
2、在MySQL中创建azkaban数据库,并运行sql脚本生成表
mysql -uroot -p #登录数据库
# 创建azkaban数据库,并授权
CREATE DATABASE azkaban;
CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
GRANT all privileges ON azkaban.* to 'azkaban'@'%' identified by 'azkaban' WITH GRANT OPTION;
flush privileges;
# 运行sql脚本生成表
use azkaban;
source /export/softwares/create-all-sql-0.1.0-SNAPSHOT.sql;
3、解压软件安装包
# 解压azkaban-web-server
cd /export/softwares
tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C ../servers/
cd /export/servers
mv azkaban-web-server-0.1.0-SNAPSHOT/ azkaban-web-server-3.51.0
# 解压azkaban-exec-server
cd /export/softwares
tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C ../servers/
cd /export/servers
mv azkaban-exec-server-0.1.0-SNAPSHOT/ azkaban-exec-server-3.51.0
4、安装SSL安全认证
cd /export/servers/azkaban-web-server-3.51.0
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
密码可自己定义,但是要记住自己定义的密码,推荐使用’azkaban’即可。遇到询问name的直接回车跳过即可。
5、azkaban web server配置文件修改
修改azkaban.properties
cd /export/servers/azkaban-web-server-3.51.0/conf
vim azkaban.properties
修改内容:
# Azkaban Personalization Settings
azkaban.name=Azkaban #修改
azkaban.label=My Azkaban #修改
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=web/
default.timezone.id=Asia/Shanghai #修改
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.use.ssl=true #修改
jetty.maxThreads=25
jetty.port=8081
jetty.ssl.port=8443 #添加
jetty.keystore=/export/servers/azkaban-web-server-3.51.0/keystore #添加
jetty.password=azkaban #添加
jetty.keypassword=azkaban #添加
jetty.truststore=/export/servers/azkaban-web-server-3.51.0/keystore #添加
jetty.trustpassword=azkaban #添加
# Azkaban Executor settings
# 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 mysql settings by default. Users should configure their own username and password.
database.type=mysql #添加
mysql.port=3306 #添加
mysql.host=node03 #添加
mysql.database=azkaban #添加
mysql.user=azkaban #添加
mysql.password=azkaban #添加
mysql.numconnections=100 #添加
#Multiple Executor
azkaban.use.multiple.executors=true
#azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus #注释掉
azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
azkaban.executorselector.comparator.Memory=1
azkaban.executorselector.comparator.LastDispatched=1
azkaban.executorselector.comparator.CpuUsage=1
azkaban.activeexecutor.refresh.milisecinterval=10000 #添加
azkaban.queueprocessing.enabled=true #添加
azkaban.activeexecutor.refresh.flowinterval=10 #添加
azkaban.executorinfo.refresh.maxThreads=10 #添加
6、修改azkaban executor server的配置文件
修改azkaban.propertie
cd /export/servers/azkaban-exec-server-3.51.0/conf
vim azkaban.properties
修改内容:
# Azkaban Personalization Settings
azkaban.name=Azkaban #修改
azkaban.label=My Azkaban #修改
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=web/
default.timezone.id=Asia/Shanghai #修改
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.use.ssl=true #修改
jetty.maxThreads=25
jetty.port=8081
jetty.keystore=/export/servers/azkaban-web-server-3.51.0/keystore #添加
jetty.password=azkaban #添加
jetty.keypassword=azkaban #添加
jetty.truststore=/export/servers/azkaban-web-server-3.51.0/keystore #添加
jetty.trustpassword=azkaban #添加
# Where the Azkaban web server is located
azkaban.webserver.url=https://node03:8443 #修改
# 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=plugins/jobtypes
# Azkaban mysql settings by default. Users should configure their own username and password.
database.type=mysql #添加
mysql.port=3306 #添加
mysql.host=node03 #添加
mysql.database=azkaban #添加
mysql.user=azkaban #添加
mysql.password=azkaban #添加
mysql.numconnections=100 #添加
# Azkaban Executor settings
executor.maxThreads=50
executor.flow.threads=30
(2)添加插件
将编译后的C文件execute-as-user.c复制到来/export/servers/azkaban-exec-server-3.51.0/plugins/jobtypes
cp /export/softwares/execute-as-user.c /export/servers/azkaban-exec-server-3.51.0/plugins/jobtypes/
执行以下命令生成execute-as-user
yum -y install gcc-c++
cd /export/servers/azkaban-exec-server-3.51.0/plugins/jobtypes
gcc execute-as-user.c -o execute-as-user
chown root execute-as-user
chmod 6050 execute-as-user
(3)修改commonprivate.properties
cd /export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes
vim commonprivate.properties
execute.as.user=false
memCheck.enabled=false
azkaban.native.lib=/export/servers/azkaban-exec-server-3.51.0/plugins/jobtypes
7、启动服务
(1)启动azkaban exec server
cd /export/servers/azkaban-exec-server-3.51.0
bin/start-exec.sh
(2) 激活exec-server
curl -G "node03:$(<./executor.port)/executor?action=activate" && echo
(3)启动azkaban-web-server
cd /export/servers/azkaban-web-server-3.51.0/
bin/start-web.sh