Azkaban:工作流调度

工作流

工作流产生背景 :
工作流(Workflow),指“ 业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流解决的主要问题是:为了实现某个业务目标,利用计算机软件在多个参与者之间按某种预定规则自动传递文档、信息或者任务。
一个完整的数据分析系统通常都是由多个前后依赖的模块组合构成的:数据采集、数据预处理、数据分析、数据展示等。各个模块单元之间存在时间先后依赖关系,且存在着周期性重复。
为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行。


工作流调度实现方式 :
简单的任务调度:直接使用linux的crontab来定义,但是缺点也是比较明显,无法设置依赖。
复杂的任务调度:自主开发调度平台,使用开源调度系统,比如azkaban、Apache Oozie、Cascading、Hamake等。
其中知名度比较高的是Apache Oozie,但是其配置工作流的过程是编写大量的XML配置,而且代码复杂度比较高,不易于二次开发。


工作流调度工具之间对比 :
下面的表格对四种hadoop工作流调度器的关键特性进行了比较,尽管这些工作流调度器能够解决的需求场景基本一致,但在设计理念,目标用户,应用场景等方面还是存在显著的区别,在做技术选型的时候,可以提供参考。

特性 Hamake Oozie Azkaban Cascading
工作流描述语言 XML XML (xPDL based) text file with key/value pairs Java API
依赖机制 data-driven explicit explicit explicit
是否要web容器 No Yes Yes No
进度跟踪 console/log messages web page web page Java API
Hadoop job调度支持 no yes yes yes
运行模式 command line utility daemon Daemon(守护进程) API
Pig支持 yes yes yes yes
事件通知 no no no yes
需要安装 no yes yes no
支持的hadoop版本 0.18+ 0.20+ currently unknown 0.18+
重试支持 no workflownode evel yes yes
运行任意命令 yes yes yes yes
Amazon EMR支持 yes no currently unknown yes

Azkaban调度器

Azkaban介绍 :
Azkaban是由linkedin(领英)公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
Azkaban:工作流调度_第1张图片
Azkaban功能特点:
提供功能清晰,简单易用的Web UI界面
提供job配置文件快速建立任务和任务之间的依赖关系
提供模块化和可插拔的插件机制,原生支持command、Java、Hive、Pig、Hadoop
基于Java开发,代码结构清晰,易于二次开发

Azkaban原理架构

Azkaban:工作流调度_第2张图片
mysql服务器: 存储元数据,如项目名称、项目描述、项目权限、任务状态、SLA规则等
AzkabanWebServer: 对外提供web服务,使用户可以通过web页面管理。职责包括项目管理、权限授权、任务调度、监控executor。
AzkabanExecutorServer: 负责具体的工作流的提交、执行。

Azkaban三种部署模式

solo server mode
该模式中webServer和executorServer运行在同一个进程中,进程名是AzkabanSingleServer。使用自带的H2数据库。这种模式包含Azkaban的所有特性,但一般用来学习和测试。


two-server mode
该模式使用MySQL数据库, Web Server和Executor Server运行在不同的进程中。


multiple-executor mode
该模式使用MySQL数据库, Web Server和Executor Server运行在不同的机器中。且有多个Executor Server。该模式适用于大规模应用。

Azkaban源码编译

Azkaban3.x在安装前需要自己编译成二进制包。
并且提前安装好Maven、Ant、Node等软件,具体请参考附件资料

编译环境

yum install –y git
yum install –y gcc-c++

下载源码解压

wget https://github.com/azkaban/azkaban/archive/3.51.0.tar.gz
tar -zxvf 3.51.0.tar.gz
cd ./azkaban-3.51.0/

编译源码

./gradlew build installDist -x test
Gradle是一个基于Apache Ant和Apache Maven的项目自动化构建工具。-x test 跳过测试。(注意联网下载jar可能会失败、慢)
Azkaban:工作流调度_第3张图片

编译后安装包路径

编译成功之后就可以在指定的路径下取得对应的安装包了。
Azkaban:工作流调度_第4张图片
#solo-server模式安装包路径
azkaban-solo-server/build/distributions/

#two-server模式和multiple-executor模式web-server安装包路径
azkaban-web-server/build/distributions/

#two-server模式和multiple-executor模式exec-server安装包路径
azkaban-exec-server/build/distributions/
在这里插入图片描述

azkaban-db/build/distributions/
数据库相关安装包路径

我个人有编译好的Azkaban如有需要就私信我

你可能感兴趣的:(Azkaban)