Azkaban的安装,集群及使用(一)

it2024-08-18  39

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

这是一个工作流,可以缩短一个程序的执行时间,提高效率!相对来说比定时器要高效,简洁,可观很多!

最新回复(0)