Azkaban使用文档
1.Azkaban简介
Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
它有如下功能特点:
- Web用户界面
- 方便上传工作流
- 方便设置任务之间的关系
- 调度工作流
- 认证/授权(权限的工作)
- 能够杀死并重新启动工作流
- 模块化和可插拔的插件机制
- 项目工作区
- 工作流和任务的日志记录和审计
2.Azkaban架构和运行模式
Azkaban有3种运行模式:
solo-servermode:
使用自带的H2作为元数据库,web server和executor server运行在同一进程,适合测试和小型规模。
twoserver mode:
适合生产环境,使用mysql作为元数据库,web server和executor server运行在不同的进程。
distributedmultiple-executor mode:
适合大型的生产环境,使用mysql作为元数据库,web server和executor server 运行在不同的主机上。
3.Azkaban使用
创建job任务
在自己本地创建以.job结尾的文件
比如 foo.job,加入以下内容
foo.job
type=command #使用unix的bash命令 command=echo "foo" #执行一条bash
创建 bar.job ,加入以下内容
bar.job
type=command command=echo "bar" dependencies=env #这个任务依赖于env这个任务,如果依赖多个任务,则使用“,”隔开。
创建flow任务
如果一个工作流下需要嵌入一个子工作流,则需指定type为flow
创建test_flow.job,加入以下内容:
test_flow.job
type=flow # 添加子工作流 dependencies=foo flow.name=test_flow #子工作流结尾的名字
子工作流如下:
start.job
type=command command=echo "test"
test_flow.job
type=command dependencies=start command=echo "test_flow"
上传和执行任务
登陆azkaban web页面:https://localhost:8443/index
将编写的job脚本以zip格式压缩打包
在azkaban页面创建一个project,然后将任务上传
执行任务
- 如果执行定时调度任务,则点击schedule
- 如果不执行定时任务,则点击execute
参数配置
如果执行任务需要指定参数
比如在bar.job中需要指定运行参数
bar.job
type=command command=echo ${day} dependencies=env
传入参数:
- 页面指定传参
在job文件通目录下创建文件 system.properties
system.properties
day=20180423
失败重试
自动重试
在job文件中配置:
retries=2 #失败重试2次 retry.backoff=300000 #单位毫秒
手动重试
手动设置重试策略