Azkaban

 Azkaban

第一节:简介

一、概念

Azkaban是一套简单的任务调度服务,整体包括三部分webserver、dbserver、executorserver。

Azkaban是linkin的开源项目,开发语言为Java。

Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。

Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

二、典型使用场景

实际当中经常有这些场景:每天有一个大任务,这个大任务可以分成A,B,C,D四个小任务,A,B任务之间没有依赖关系,C任务依赖A,B任务的结果,D任务依赖C任务的结果。一般的做法是,开两个终端同时执行A,B,两个都执行完了再执行C,最后再执行D。这样的话,整个的执行过程都需要人工参加,并且得盯着各任务的进度。但是我们的很多任务都是在深更半夜执行的,通过写脚本设置crontab执行。其实,整个过程类似于一个有向无环图(DAG)。每个子任务相当于大任务中的一个流,任务的起点可以从没有度的节点开始执行,任何没有通路的节点之间可以同时执行,比如上述的A,B。总结起来的话,我们需要的就是一个工作流的调度器,而azkaban就是能解决上述问题的一个调度器。

三、常用的调度机制

基于时间,定时

基于时间间隔的

基于事件驱动的

第二节:Azkaban的功能特点

1、Web用户界面

2、方便上传工作流

3、方便设置任务之间的关系

4、工作流调度

5、认证/授权

6、能够杀死并重启工作流

7、模块化和可插拔的插件机制

8、项目工作区

9、工作流和任务的日志记录和审计

第三节:Azkaban的架构

Azkaban是一种类似于Oozie的工作流控制引擎,可以用来解决多个Hadoop(或Spark等)离线计算任务之间的依赖关系问题。也可以用其代替crontab来对周期性任务进行调度,并且更为直观,可靠,同时提供了美观的可视化管理界面。

Azkaban由三部分构成:

1、Relational Database(Mysql)

  azkaban将大多数状态信息都存于MySQL中,Azkaban Web Server 和 Azkaban Executor Server也需要访问DB。

2、Azkaban Web Server

  提供了Web UI,是azkaban的主要管理者,包括 project 的管理,认证,调度,对工作流执行过程的监控等。

3、Azkaban Executor Server

调度工作流和任务,纪录工作流活任务的日志,之所以将AzkabanWebServer和AzkabanExecutorServer分开,主要是因为在某个任务流失败后,可以更方便的将重新执行。而且也更有利于Azkaban系统的升级

MySQL实例:Azkaban使用MySQL来存储项目和执行。

Azkaban Web服务器:Azkaban使用Jetty作为Web服务器,用作控制器以及提供Web界面。

Azkaban执行服务器:Azkaban执行服务器执行提交工作流。

第四节:oozie和azkaban的比较

一、共同点

都提供优美的可视化操作界面,托拉拽。

二、区别

1、oozie

权限控制不好,没有。重配置,比较繁琐的。调度机制比较完善的。配置xml。支持高可用

2、azkaban

有完善的权限控制。相对来说较轻。调度机制没有oozie完善的90%。配置properties。azkaban 3.0之前不支持高可用的,3.0之后的版本支持的。

原文地址:https://www.cnblogs.com/lizm166/p/13354567.html