工作流调度器Azkaban

1.工作流调度器

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

  • 一个完整的数据分析系统通常都是由大量任务单元组成:
    • shell脚本程序,java程序,mapreduce程序、hive脚本等
    • 各任务单元之间存在时间先后及前后依赖关系
    • 为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;
  • 例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下所示:
    • 通过Hadoop先将原始数据同步到HDFS上;
    • 借助MapReduce计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多张Hive表中;
    • 需要对Hive中多个表的数据进行JOIN处理,得到一个明细数据Hive宽表;
    • 将明细数据进行各种统计分析,得到结果报表信息;
    • 需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。

2. 工作流调度实现方式

  • 简单的任务调度:直接使用linux的crontab来定义;
  • 复杂的任务调度:开发调度平台或使用现成的开源调度系统,比如ooize、azkaban、airflow、dophinschedule等

2. Azkaban介绍

  • Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流(work flow)内以一个特定的顺序运行一组工作和流程。
  • Azkaban定义了一种KV格式文件(properties)来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
  • 它有如下功能特点:
    • 提供功能清晰、简单易用的web UI界面
      • 方便上传工作流
      • 调度工作流
      • 能够杀死并重新启动工作流
      • 工作流和任务的日志记录和审计
    • 提供job配置文件快速建立任务和任务之间的关系
    • 提供模块化的可插拔机制,原生支持command、java、hive、hadoop
    • 安全性高:认证/授权(权限的工作)
    • 提供分布式的多个执行服务器executor
    • 提供conditional workflow工作流

3. azkaban的基本架构

  • Azkaban由三部分构成
    • 1、Azkaban Web Server
      提供了Web UI,是azkaban的主要管理者,包括 project 的管理,认证,调度,对工作流执行过程的监控等。
    • 2、Azkaban Executor Server
      负责具体的工作流和任务的调度提交
    • 3、Mysql
      用于保存项目、日志或者执行计划之类的信息

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

1. solo server mode(单机模式)

  • solo server mode是azkaban的一个独立的实例
  • 易于安装:不需要安装mysql,它内置了H2数据库,作为它的底层持久化存储
  • 易于开始使用:管理服务器web server和执行服务器execute server都在一个进程中运行,任务量不大项目可以采用此模式
  • 包含azkaban所有的功能
  • 有兴趣的同学,可以参考官网文档

2. two server mode

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

3. multiple executor mode

  • web server 和 executor server运行在不同的进程,executor server有多个
  • 该模式下,执行服务器和管理服务器在不同主机上,且执行服务器可以有多个。
posted @ 2021-06-16 21:20  Tenic  阅读(122)  评论(0编辑  收藏  举报