Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
1、Web用户界面 2、方便上传工作流 3、方便设置任务之间的关系 4、调度工作流 5、认证/授权(权限的工作) 6、能够杀死并重新启动工作流 7、模块化和可插拔的插件机制 8、项目工作区 9、工作流和任务的日志记录和审计
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的定时执行任务基于时间和输入数据
Airflow基于Dag也可以定义复杂的工作流,属于Python技术栈。Azkaban属于Java 不建议使用Airflow,因为其管理界面实在太low了。
解压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-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-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;命令: 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服务器安装目录 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进入执行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服务
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这是一个工作流,可以缩短一个程序的执行时间,提高效率!相对来说比定时器要高效,简洁,可观很多!