任务调度器之azkaban(一)

最近公司有用到azkaban,参考一些资料来分享下。
市面上目前有许多工作流调度器
在hadoop领域,常见的工作流调度器有Oozie,Azkaban,Cascading,Hamake等。
各种调度工具特性对比
下面的表格对上述四种调度器的关键特性进行了比较,尽管这些工作流调度器能够解决的需求场景基本一致,但在设计理念,目标用户,应用场景等方面还是存在显著的区别。

任务调度器之azkaban(一)_第1张图片
Azkaban介绍
Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
它有如下功能特点:
Web用户界面
方便上传工作流
方便设置任务之间的关系
调度工作流
认证/授权(权限的工作)
能够杀死并重新启动工作流
模块化和可插拔的插件机制
项目工作区
工作流和任务的日志记录和审计
Azkaban包括三个关键组件:
关系数据库:使用mysql数据库,主要用于保存流程、权限、任务状态、任务计划等信息。azkaban executor server和azkaban web server均使用到了Mysql数据库。
AzkabanExecutorServer在如下几个方面使用到了数据库:
1、获取project的信息
2、执行工作流
3、存储工作流运行日志
AzkabanWebServer在如下几个方面使用到了数据库:
1、project管理
2、跟踪工作流执行进度
3、访问历史工作流的运行信息
4、定时执行工作流任务
AzkabanWebServer:为用户提供管理留存、任务计划、权限等功能。
是整个Azkaban工作流系统的主要管理者,它负责project管理、用户登录认证、定时执行工作流、跟踪工作流执行进度等一系列任务。同时,它还提供Web服务操作的接口,利用该接口,用户可以使用curl或其他ajax的方式,来执行azkaban的相关操作。操作包括:用户登录、创建project、上传workflow、执行workflow、查询workflow的执行进度、杀掉workflow等一系列操作,且这些操作的返回结果均是json的格式。
AzkabanExecutorServer:执行任务,并把任务执行的输出日志保存到Mysql;可以同时启动多个AzkabanExecutorServer,他们通过mysql获取流程状态来协调工作。
之所以将AzkabanWebServer和AzkabanExecutorServer分开,主要是因为在某个人物流失败后,可以更方便的将重新执行。而且也更有利于Azkaban系统的升级。
两种不同类型的Azkaban
solo server mode:该模式使用H2数据库,且WebServer和ExecutorServer运行在同一个进程中,没有单独分开。该模式适用于小规模使用。
任务调度器之azkaban(一)_第2张图片

你可能感兴趣的:(azkaban)