Azkaban工作流调度器原理

1. 为什么需要工作流调度系统

  • 一个完整的数据分析系统通常都是由大量任务单元组成;

    • shell脚本程序、java程序、mapreduce程序、hive脚本等

  • 各任务单元之间存在时间先后及前后依赖关系

  • 为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行

  • 当然好多公司都开发自己的调度系统

2. Azkaban是什么

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

  • Azkaban定义了一种==KV文件(properties)格式==来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。https://azkaban.github.io/

功能特点

  • 提供功能清晰、简单易用的web UI界面

  • 提供job配置文件快速建立任务和任务之间的关系

  • 提供模块化的可插拔机制,原生支持command、java、hive、hadoop

  • 基于java开发,代码结构清晰,易于二次开发

3. Azkaban基本架构

  • Azkaban由三部分构成

    • 1、Azkaban Web Server

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

 

  • 2、Azkaban Executor Server

    • 负责具体的工作流和任务的调度提交

  • 3、Mysql

    • 用于保存项目、日志或者执行计划之类的信息

4. Azkaban架构的三种运行模式

  • 1、solo server mode(单机模式)

H2
web server 和 executor server运行在一个进程里
最简单的模式,数据库内置的H2数据库,管理服务器和执行服务器都在一个进程中运行,任务量不大项目可以采用此模式。
  • 2、two server mode

web server 和 executor server运行在不同的进程
数据库为mysql,管理服务器和执行服务器在不同进程,这种模式下,管理服务器和执行服务器互不影响。
  • 3、multiple executor mode

web server 和 executor server运行在不同的进程,executor server有多个
该模式下,执行服务器和管理服务器在不同主机上,且执行服务器可以有多个。

你可能感兴趣的:(Azkaban)