【Hadoop大数据技术】——Azkaban工作流管理器(学习笔记)

📖 前言:在前面HDFS分布式文件系统中,我们使用Linux自带的Crontab(定时任务工具)来定时调度任务,但是当业务规模变大并且需要可视化监控任务执行的时候,Crontab就已经不能满足这些需求了。为此,针对多任务,可视化调度的管理需求,工作流管理器便应运而生。

在这里插入图片描述


🕒 1. 工作流调度系统背景

一个完整的数据分析系统通常都是由大量任务单元组成,例如shell脚本程序、java程序、mapreduce程序和Hive脚本等。各任务单元之间存在时间先后及依赖关系,为了将这复杂的执行计划组织起来,需要一个工作流调度系统来调度执行

🕒 2. 常用工作流管理器介绍

  1. Azkaban
    Azkaban是由Linkedin公司开源的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。
  2. Oozie
    Oozie是Apache旗下的,用于管理Hadoop任务的工作流/协调系统,可与Hadoop生态圈紧密结合,提供诸多配置和功能。
  3. Zeus
    Zeus是Alibaba开源的一个完整的Hadoop的作业平台,用于从Hadoop任务的调试运行到生产任务的周期调度管理。Zeus是针对Hadoop集群任务定制的,通用性不强。Zeus在Github上线时受到青睐,但是由于长期缺乏维护更新,时隔2年,依然仅支持Hadoop1.X版本,后期的Zeus版本也不再开源了。

🕒 3. Azkaban特点

Azkaban通过作业的依赖性解决业务调度顺序,并提供易于使用的UI界面来维护和跟踪工作流程,其主要特点如下:
(1) 兼容任何版本的Hadoop;
(2) 易于使用的Web UI界面;
(3) 简单的Web和Http工作流上传;
(4) 支持工作流定时调度;
(5) 支持模块化和可插入;
(6) 支持身份验证和授权;
(7) 支持用户操作跟踪;
(8) 提供有关失败和成功的电子邮件提醒;
(9) 提供SLA警报和自动查杀功能。

🕒 4. Azkaban组成结构

Azkaban工作流管理器由三个核心部分组成,分别是Relational Database(关系型数据库MySQL)、AzkabanWebServer(Web服务器)、AzkabanExecutorServer(执行服务器)。三者关系具体如图所示。

在这里插入图片描述

  • Relational Database负责存储Azkaban相关的数据,包括上传的工作流、作业的执行日志等,Azkaban Web Server和Azkaban Executor Server都会频繁访问Relational Database获取Azkaban相关的数据。
  • Azkaban Web Server是Azkaban的主要管理者,它用于处理项目管理、身份验证、任务调度和触发工作流执行等,同时为用户提供Web界面供用户查看。
  • Azkaban Executor Server主要负责工作流和工作的实际执行。在最初的Azkaban版本中,Azkaban Web Server和Azkaban Executor Server是自动部署在同一台服务器中的,后来由于功能需求和扩展,可以将Azkaban Web Server和Azkaban Executor Server分别部署在不同的服务器中。

🕒 5. Azkaban部署模式

  1. solo-server ode(独立服务器模式)
    在独立服务器模式下,使用的数据库是内嵌的H2,并且web server和executor server都在同一进程中运行,通常适用于小规模测试阶段。
  2. two server mode(双服务器模式)
    双服务器模式适用于比较复杂的生产环境,它的数据库会由具有主从设置的MySQL实例提供支持。其中,Web服务器和执行服务器应在不同的进程中运行,以便升级和维护过程中不影响用户。
  3. distributed multiple-executor mode(分布式多执行器模式)
    分布式多执行器模式适用于特别复杂的生产环境,理想情况下,Web服务器和执行服务器应在不同的主机中运行,以便升级和维护不影响用户。这种分布式多主机设置的模式为Azkaban带来了强大且可扩展的性能。

🕒 6. 课后习题

一、填空题。
1、Azkaban定义了一种______格式来建立任务之间的依赖关系,并提供一个易于使用的_____维护和跟踪工作流。
2、Azkaban工作流管理器的特点是所有的任务资源文件都需要____上传。

二、判断题。
1、Azkaban可以通过查看executorServerLog__*.out日志文件和logs目录下的日志文件查看Azkaban Executor服务器的启动情况。
2、Azkaban是对job进行调度管理的,而每一个job任务都是编写在一个文本文件中,且对文本文件没有限制。
3、Azkaban要建立job之间的依赖关系需要使用command参数。

三、选择题
1、下列选项中是配置job的必要参数(多选)
A、type
B、dependencies
C、command
D、flow.name

四、简答题。
1、简述Azkaban中的project、job和flow元素的关系。
2、简述Azkaban的组成部分,以及各个部分的功能。

答案:
一、填空题
1、 KV文件、UI界面
2、 打成一个zip包

二、判断题
1、√ 2、× 3、×

三、选择题
1、AC

四、简答题
1、project可以理解为Azkaban的某个项目,在项目中包含了许多需要执行的任务,即为job,各个job之间形成依赖关系,就组成了工作流flow。
2、Azkaban分为三部分,mysql服务器:用于存储项目、日志或者执行计划之类的信息;web服务器:使用Jetty对外部提供web服务,使用户通过WEB UI操作Azkaban系统;executor服务器:负责具体的工作流的提交、执行。


OK,以上就是本期知识点“Azkaban工作流管理器”的知识啦~~ ,感谢友友们的阅读。后续还会继续更新,欢迎持续关注哟📌~
💫如果有错误❌,欢迎批评指正呀👀~让我们一起相互进步🚀
🎉如果觉得收获满满,可以点点赞👍支持一下哟~

❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值