Azkaban--工作流调度系统

12 Feb 2021

基本认识

什么是工作流workflow

一个完整的数据分析系统通常都是由大量任务单元组成:

工作流调度实现方式

Azkaban与Oozie对比

对市面上最流行的两种调度器,进行对比分析。总体来说,Ooize相比Azkaban是一个重量级的任务调度系统,功能全面,但配置使用也更复杂(xm)。如果可以不在意某些功能的缺失,轻量级调度器Azkaban是很不错的候选对象。

Azkaban介绍

Azkaban是由linkedin (领英)公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

Azkaban定义了一种KV文件(properties)格式来建立任务之间的依赖关系,并提供一个易于使用的web 用户界面维护和跟踪你的工作流。
有如下功能特点

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

Azkaban安装部署

1. 编译安装包

这里选用azkaban3.51.0这个版本自己进行重新编译,编译完成之后得到我们需要的安装包进行安装

cd /opt/lagou/software/  
wget https://github.com/azkaban/azkaban/archive/3.51.0.tar.gz   
tar -zxvf 3.51.0.tar.gz -C ../servers/  
cd /opt/1agou/servers/azkaban-3.51.0/  
yum -y install git  
yum -y install gcc-c++  
./gradlew build installDist -x test  

编译成功之后生成的文件

azkaban-db-0.1.0-SNAPSHOT.tar.gz  
azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz  
azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz  
azkaban-web-server-0.1.0-SNAPSHOT.tar.gz  

2. solo-server模式部署

单服务模式安装

3. multiple-executor模式部署

Azkaban使⽤

shell command调度

创建job描述文件

vi command.job  
  
type=command  
command=echo 'hello'  

将job资源文件打包成zip文件

zip command.job  

通过azkaban的web管理平台创建project并上传job压缩包

job依赖调度

创建有依赖关系的多个job描述第一个job:foo.job

foo.job  
type=command  
command=echo 'foo'  

第二个job:bar.job依赖foo.jobbar.job

type=command  
dependencies=foo   
command=echo 'bar'  

将所有job资源⽂件打到⼀个zip包中
在azkaban的web管理界面创建⼯程并上传zip包, 启动⼯作流flow

HDFS任务调度

创建job描述文件fs.job

type=command  
command=/opt/lagou/servers/hadoop-2.9.2/bin/hadoop fs -mkdir /azkaban  

将job资源文件打包成zip文件
通过azkaban的web管理平台创建project并上传job压缩包启动执行该job

MAPREDUCE任务调度

mr任务依然可以使用command的job类型来执行
创建job描述文件,及mr程序jar包(示例中直接使用hadoop自带的example jar)

vim mrwc.job  
  
type=command  
command=/opt/1agou/servers/hadoop-2.9.2/bin/hadoop jar hadoop-mapreduce- examples-2.9.2.jar wordcount /wordcount/input /wordcount/azout  

将所有job资源文件打到一个zip包中
在azkaban的web管理界面创建工程并上传zip包启动job

HIVE脚本任务调度

创建job描述文件和hive脚本Hive脚本: test.sql

use default;  
drop table aztest;  
create table aztest(id int,name string)   
row format delimited   
fields terminated by ',';  

Job描述文件:hive.job

type=command  
command=/opt/1agou/servers/hive-2.3.7/bin/hive -f 'test.sql'  

将所有job资源文件打到一个zip包中创建工程并上传zip包,启动job

定时任务调度

web界面启动的时候使用schedule就可以了