工作流调度器Azkaban

介绍

Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

它有如下功能特点:

  • Web用户界面
  • 方便上传工作流
  • 方便设置任务之间的关系
  • 调度工作流
  • 认证/授权(权限的工作)
  • 能够杀死并重新启动工作流
  • 模块化和可插拔的插件机制
  • 项目工作区
  • 工作流和任务的日志记录和审计

azkaban任务依赖图

安装

Azkaban的配置相当容易, 只需要设置两个服务器和一个数据库:

  • MySQL实例 – Azkaban使用MySQL来存储项目和执行
  • Azkaban Web服务器 – Azkaban使用Jetty作为Web服务器,用作控制器以及提供Web界面
  • Azkaban执行服务器 – Azkaban执行服务器执行提交工作流。

其中:web服务器和执行服务器是分别部署和启动的。

具体安装步骤详见:http://azkaban.github.io/azkaban2/docs/2.5/#getting-started

建立任务

在Azkaban主页面创建一个Project后可以上传任务。Azakban目前只支持上传.zip的文件,把所有需要用到的jar包和配置都放到.zip文件中。
例如:建立foo.job和bar.job两个任务,且bar.job依赖于foo.job

# foo.job
type=command
command=echo "hello"
command.1=echo "hello of command.1"

# bar.job
type=command
command=echo "hello"
dependencies=foo

除了通过web界面,Azkaban也支持http协议的方式上传和执行任务。

任务调度

Azkaban里面除了按时间指定任务何时启动,还可以指定任务周期:就是任务的重复执行频率。这对于那些需要每天或每小时重复执行的任务很有用。

除了设置时间,还能设置任务的失败策略和报警机制。比如可以选择是第一次失败就报警,还是整个流完成后报警。对于工作流中的单个任务还可以设置是否启动。
azkaban任务设置

插件机制

Azkaban支持可插拔的扩展插件,以便提供更多功能,更好的支持其他系统。例如hdfs查看插件可以查看hadoop上的文件。而job类型插件则能够定义具体的任务的启动和执行方式,包括hive,pig等。用户可以方便的扩展插件来支持不同的hadoop版本,或者支持其他的系统。

总结

总的来说,Azkaban是一个比较好用的工作流调度系统,可以用来运行hadoop, hive,pig等各种任务,管理hdfs等,功能还是很强大的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注