开发者学堂课程【Azkaban 大数据调度系统课程精讲:Azkaban--介绍、架构、部署模式 】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/721/detail/12873
Azkaban--介绍、架构、部署模式
内容介绍:
一、Azkaban 介绍
二、Azkaban 功能特点
三、Azkaban 原理架构
四、Azkaban 三种部署模式
五、小结
一、Azkaban 介绍
1、从名字上看 Azkaban 的前面并没有加上阿帕奇,说明 Azkaban 并不是阿帕奇的项目,但并不妨碍它成为一款大数据生态链中非常给力的工作流调度器软件。
2、Azkaban 是由 linkedin (领英)公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban 使用 job 配置文件建立任务之间的依赖关系,并提供一个易于使用的 web 用户界面维护和跟踪你的工作流。Azkaban 做工作流很简单,把它配置好之后,可以按照设定的顺序运行工作和流程,并且还可以配合调度周期性的去执行。
二、Azkaban 功能特点
1、提供功能清晰,它使用的是 job 配置文件,里面是 kv 介质堆的形式,不会太多,大概三五行就可以描绘出任务,甚至是模块之间的关系,再加上依赖,配置好之后就可以进行执行。简单易用的 Web UI 界面,可以告别黑窗口稀有命令行,用 web 用户界面维护和跟踪你的工作流。
2、提供 job 配置文件快速建立任务和任务之间的依赖关系。
3、提供模块化和可插拔的插件机制,原生支持 command、Java、 Hive、Pig、Hadoop,任何一款软件只要通过shell 执行都可以转换成 Azkaban 来执行。
4、基于 Java 开发,代码结构清晰,易于二次开发。如果当中某些模块不符合企业中实际需求,可以针对它进行二次开发,修改源码。
三、Azkaban 原理架构
Azkaban 有三个模块,AzkabanWebServer,AzkabanExecutorServer,mysql 服务器。
1、mysql 服务器:存储元数据,如项目名称、项目描述、项目权限、任务状态、SLA 规则等。内置 hr 服务器也可以。用户打开页面,通过页面代表服务器创建相关的工程以及项目信息,信息被保存在 mysql 服务器中,执行服务器再读取保存在 mysql 服务器的信息,按照时间计划执行相关的任务即可。
2、AzkabanWebServer:web 服务器,对外提供 web 服务,使用户可以通过 web 页面管理。职责包括项目管理、权限授权、任务调度、监控 executor、删除等。不需要安装,内置服务器。
3、AzkabanExecutorServer:负贵具体的工作流的提交、执行。执行服务器,进行任务调度时,进行脚本执行,提交mr 程序,提交 have 脚本。
三个共同配合构成了 Azkaban 的原理。在实际开发和使用 Azkaban 过程中很少设计到开发 web 服务器和 executor服务器,只要按照语法手册使用它即可。
四、Azkaban 三种部署模式
1、solo server mode
单节点模式也称为单机模式,该模式中 webServer 和
executorServer 运行在同一个进程中,进程名是 AzkabanSingleServer,不再使用 mysql,使用自带的 H2数据库。这种模式包含 Azkaban 的所有特性,但是在比较复杂的时候,会有性能的问题。一般用来学习和测试。初学时可以简单的使用单节点模式,配置一两个参数就可以使用了。一般初学者进行使用。
2、two-server mode
该模式使用 MySQL 数据库,Web Server和Executor Server 运行在不同的进程中。把两个服务拆开,每个都是一个进程。在这种模式下可以使用第三方的数据库进行保存共有调度的相关信息,相当于拆分,分布式。在企业中使用最多。
3、multiple-executor mode
多执行服务器,相当于在第二个模式上再增加多个执行服务器,比如公司工作流调度的需求特别的繁忙,特别多,一个执行服务器满足不了,比如每小时设置100个调度项目,但是它每小时只能执行50个,这时就可以部署两个或者三个执行,该模式使用 MySQL数据库,Web Server 和Executor Server 运行在不同的机器中。且有多个 Executor Server。使功能更加强大,该模式适用于大规模应用。功能比较强大是第三个模式。
五、小结
Azkaban
1、是由领英退出的一-款开源免费的工作流调度器软件
2、特点
(1)功能强大可以调度几乎所有软件的执行( command )
(2)配置简单 job 配置文件
(3)提供了 web 页面使用
(4)java语言开发源码清晰可见,可以进行二次开发
3、架构
(1)web 服务器:对外提供 web 服务用户在页面上进行项目的相关管理
(2)executor 服务器:负责具体的工作流的调度提交。
(3)数据库:用于保存工作流相关信息(比如: mysql )
4、部署模式
单节点模式: web、executor 在同一个进程适用于测试体验
two-server:web、executor 在不同的进程中,可以使用第三方数据库
mutil-executor-server:web、executor 在不同的机器上,可以部署多个 executor 服务器