📖 前言:在前面HDFS分布式文件系统中,我们使用Linux自带的Crontab(定时任务工具)来定时调度任务,但是当业务规模变大并且需要可视化监控任务执行的时候,Crontab就已经不能满足这些需求了。为此,针对多任务,可视化调度的管理需求,工作流管理器便应运而生。
目录
- 🕒 1. 工作流调度系统背景
- 🕒 2. 常用工作流管理器介绍
- 🕒 3. Azkaban特点
- 🕒 4. Azkaban组成结构
- 🕒 5. Azkaban部署模式
- 🕒 6. 课后习题
🕒 1. 工作流调度系统背景
一个完整的数据分析系统通常都是由大量任务单元组成,例如shell脚本程序、java程序、mapreduce程序和Hive脚本等。各任务单元之间存在时间先后及依赖关系,为了将这复杂的执行计划组织起来,需要一个工作流调度系统来调度执行
🕒 2. 常用工作流管理器介绍
- Azkaban
Azkaban是由Linkedin公司开源的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。 - Oozie
Oozie是Apache旗下的,用于管理Hadoop任务的工作流/协调系统,可与Hadoop生态圈紧密结合,提供诸多配置和功能。 - 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部署模式
- solo-server ode(独立服务器模式)
在独立服务器模式下,使用的数据库是内嵌的H2,并且web server和executor server都在同一进程中运行,通常适用于小规模测试阶段。 - two server mode(双服务器模式)
双服务器模式适用于比较复杂的生产环境,它的数据库会由具有主从设置的MySQL实例提供支持。其中,Web服务器和执行服务器应在不同的进程中运行,以便升级和维护过程中不影响用户。 - 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
博客链接:🔎 作者博客主页