Azkaban的介绍:
Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
功能特点:
1、Web用户界面
2、方便上传工作流
3、方便设置任务之间的关系
4、调度工作流
5、认证/授权(权限的工作)
6、能够杀死并重新启动工作流
7、模块化和可插拔的插件机制
8、项目工作区
9、工作流和任务的日志记录和审计
Azkaban与Oozie对比
u 资源管理
Azkaban有较严格的权限控制,如用户对工作流进行读/写/执行等操作
Oozie暂无严格的权限控制
u 工作流执行
Azkaban有两种运行模式,分别是soloserver mode(executor server和web server部署在同一台节点)和multi server mode(executor server和web server可以部署在不同节点)
u 工作流传参
Azkaban支持直接传参,例如${input}
Oozie支持参数和EL表达式,例如${fs:dirSize(myInputDir)}
u 定时执行
Azkaban的定时执行任务是基于时间的
Oozie的定时执行任务基于时间和输入数据
Azkaban和Airflow对比
Airflow基于Dag也可以定义复杂的工作流,属于Python技术栈。Azkaban属于Java
不建议使用Airflow,因为其管理界面实在太low了。
安装流程
azkaban web服务器安装
解压azkaban-web-server-2.5.0.tar.gz
命令: tar –zxvf azkaban-web-server-2.5.0.tar.gz
将解压后的azkaban-web-server-2.5.0 移动到 azkaban目录中,并重新命名 webserver
命令:
mv azkaban-web-server-2.5.0 ../azkaban
cd ../azkaban
mv azkaban-web-server-2.5.0 server
azkaban 执行器安装
解压azkaban-executor-server-2.5.0.tar.gz
命令:tar –zxvf azkaban-executor-server-2.5.0.tar.gz
将解压后的azkaban-executor-server-2.5.0 移动到 azkaban目录中,并重新命名 executor
命令:
mv azkaban-executor-server-2.5.0 ../azkaban
cd ../azkaban
mv azkaban-executor-server-2.5.0 executor
azkaban脚本导入
解压: azkaban-sql-script-2.5.0.tar.gz
命令:tar –zxvf azkaban-sql-script-2.5.0.tar.gz
将解压后的mysql 脚本,导入到mysql中:
进入mysql:
mysql> create database azkaban;
mysql> use azkaban;
Database changed
mysql> source 你的sql绝对路径/create-all-sql-2.5.0.sql;
创建SSL配置
命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA
将在当前目录生成 keystore 证书文件,将keystore 拷贝到 azkaban web服务器根目录中.如:cp keystore azkaban/webserver
配置文件
1、生成时区配置文件Asia/Shanghai
2、拷贝该时区文件,覆盖系统本地时区配置
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
azkaban web服务器配置
进入azkaban web服务器安装目录 conf目录
vim 修改azkaban.properties文件,一般修改的文件内容为:
azkaban.name=Test
azkaban.label=My Local Azkaban
# 数据库方面
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
azkaban 执行服务器配置
进入执行executor服务器安装目录conf,修改azkaban.properties,基本与web修改的内容一致,修改数据库配置。
若有多台服务器需要连接azkaban使用,可以在其它服务器上安装执行器,将对应的服务器加入azkaban数据库的executors表,并激活。对应的主键id会非常重要
用户配置
进入azkaban web服务器conf目录,修改azkaban-users.xml,增加 管理员用户
启动
web服务器
在azkaban web服务器目录下执行启动命令:
bin/azkaban-web-start.sh
或者后台启动:nohup ./bin/Azkaban-web.start.sh >> xxx.out&
执行服务器
在执行服务器目录下执行启动命令:
./bin/azkaban-executor-start.sh
访问:https://localhost:8443 ,即可访问azkaban服务
Azkaban使用
1、添加项目projects
2、编程job文件(单一简单模式)
#command.job
type=command
command=echo 'hello world'
3、上传
4、执行
5、添加定时器和执行器选择
工作中使用
场景一:在docker外面访问docker里面的python执行
#xxxx
type = command
command = docker exec -w /code/azkaban 81023aqe1331 python manage.py test
场景二:访问本地的python项目
#xxxxx
type = command
command = python /home/host/azkaban/manage.py test
场景三:访问本地的py文件
#xxxxx
type = command
command = python /home/host/azkaban/test.py
场景四:访问一些shell
#xxxxx
type = command
command = sh /home/host/azkaban/test.sh
场景五:执行工作流flow
start.job
# start.job
type=command
command = echo 'start'
run_0.job
#sync_azkaban_test.py 0
type = command
command = docker exec -w /code/azkaban 8123qew131 python manage.py sync_azkaban_test 0
dependencies = start # 依赖
run_1.job
#sync_azkaban_test.py 1
type = command
command = docker exec -w /code/azkaban 8123qew131 python manage.py sync_azkaban_test 1
dependencies = start # 依赖
end.job
# end.job
type=command
command = echo 'end'
dependencies = run_0, run_1
这是一个工作流,可以缩短一个程序的执行时间,提高效率!相对来说比定时器要高效,简洁,可观很多!