Azkaban详细介绍

2 篇文章 0 订阅
1 篇文章 0 订阅

Azkaban概述

        Azkaban是一个批处理工作流作业调度程序,在LinkedIn上创建,用于运行Hadoop作业,整体包括三部分webserver、dbserver、executorserver。Azkaban通过作业依赖项解决排序问题,并提供一个易于使用的web用户界面来维护和跟踪工作流。

Azkaban特点

  1. 兼容任何版本的Hadoop
  2. 易于使用的web UI,简单的web和http工作流上传
  3. 调度的工作流,模块化和pluginable,支持command、Java、Hive、Pig、Hadoop
  4. 用户动作跟踪,关于失败和成功的电子邮件提醒
  5. SLA报警和自动终止 和重新尝试失败的工作

Azkaban架构

在这里插入图片描述
Azkaban由三个关键组件构成:

  1. 关系型数据库(MySQL)
  2. AzkabanWebServer
  3. AzkabanExecutorServer

关系型数据库(MySQL)

Azkaban使用数据库存储大部分状态,AzkabanWebServer和AzkabanExecutorServer都需要访问数据库。
AzkabanWebServer使用数据库的原因如下:

  1. 项目管理:项目、项目权限以及上传的文件。
  2. 执行流状态:跟踪执行流程以及执行程序正在运行的流程。
  3. 以前的流程/作业:通过以前的作业和流程执行以及访问其日志文件进行搜索。
  4. 计划程序:保留计划作业的状态。
  5. SLA:保持所有的SLA规则

AzkabanExecutorServer使用数据库的原因如下:

  1. 访问项目:从数据库检索项目文件。
  2. 执行流程/作业:检索和更新正在执行的作业流的数据
  3. 日志:将作业和工作流的输出日志存储到数据库中。
  4. 交互依赖关系:如果一个工作流在不同的执行器上运行,它将从数据库中获取状态。

AzkabanWebServer

        AzkabanWebServer是整个Azkaban工作流系统的主要管理者,它负责project管理、用户登录认证、定时执行工作流、跟踪工作流执行进度等一系列任务。同时,它还提供Web服务操作的接口,利用该接口,用户可以使用curl或其他ajax的方式,来执行azkaban的相关操作。操作包括:用户登录、创建project、上传workflow、执行workflow、查询workflow的执行进度、杀掉workflow等一系列操作,且这些操作的返回结果均是json的格式。并且Azkaban使用方便,Azkaban使用以.job为后缀名的键值属性文件来定义工作流中的各个任务,以及使用dependencies属性来定义作业间的依赖关系链。这些作业文件和关联的代码最终以*.zip的方式通过Azkaban UI上传到Web服务器上。

AzkabanExecutorServer

        以前版本的Azkaban在单个服务中具有AzkabanWebServer和AzkabanExecutorServer功能,目前Azkaban已将AzkabanExecutorServer分离成独立的服务器,拆分AzkabanExecutorServer的原因有如下几点:

  1. 某个任务流失败后,可以更方便的将其重新执行
  2. 便于Azkaban升级
    AzkabanExecutorServer主要负责具体的工作流的提交、执行,可以启动多个执行服务器,它们通过mysql数据库来协调任务的执行。

Azkaban作业流执行过程

  1. Webserver根据内存中缓存的各Executor的资源状态(Webserver有一个线程会遍历各个active executor,去发送http请求获取其资源状态信息缓存到内存中),按照选择策略(包括executor资源状态、最近执行流个数等)选择一个executor下发作业流;
  2. executor判断是否设置作业粒度分配,如果未设置作业粒度分配,则在当前executor执行所有作业;如果设置了作业粒度分配,则当前节点会成为作业分配的决策者,即分配节点;
  3. 分配节点从zookeeper获取各个executor的资源状态信息,然后根据策略选择一个executor分配作业;
  4. 被分配到作业的executor即成为执行节点,执行作业,然后更新数据库。

Azkaban架构的运行模式

solo server mode

        最简单的模式,数据库内置的H2数据库,AzkabanWebServer和AzkabanExecutorServer都在一个进程中运行,任务量不大项目可以采用此模式。

two server mode

        数据库为MySQL,管理服务器和执行服务器在不同进程,这种模式下,AzkabanWebServer和AzkabanExecutorServer互不影响。

multiple executor mode

        该模式下,AzkabanWebServer和AzkabanExecutorServer运行在不同主机上,且AzkabanExecutorServer可以有多个。

        目前我们采用的是multiple executor mode方式,分别在不同的主机上部署多个AzkabanExecutorServer以应对高并发定时任务执行的情况,从而减轻单个服务器的压力。

Azkaban与其他任务调度比较

        常见的工作流调度器有 Oozie, Azkaban,Cascading,Hamake 等,简单的任务调度可以直接使用 linux 的 crontab 来定义,复杂的任务调度可以开发调度平台或使用现成的开源调度系统,比如 ooize、azkaban 等
目前比较主流的调度工具有ooize、azkaban,那么他们有什么特性和区别呢?

OozieAzkaban特性
XML (xPDL based)text file with key/value pairs工作流描述语言
explicitexplicit依赖机制
YesYesweb容器
web pageweb page进度追踪
YesYesHadoop job调度支持
daemondaemon运行模式
YesYes事件通知
YesYes重试机制
YesYes运行命令

总体来说,ooize相比azkaban是一个重量级的任务调度系统,功能全面,但配置使用也更复杂。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值