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之后的版本支持的。