工作流调度器Azkaban的基本架构、运行模式、安装部署和使用案例详解

本文详细介绍了Azkaban工作流调度系统,包括其基本架构、运行模式(单机、双机、多执行器模式)、安装部署步骤以及多个使用案例,如Command类型任务、HDFS操作、MAPREDUCE和HIVE脚本任务等,展示了Azkaban在大数据处理中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、准备工作

二、Azkaban介绍

1. 为什么需要工作流调度系统

2. Azkaban介绍

三、Azkaban的基本架构

四、Azkaban的三种运行模式

五、Azkaban的安装部署

1. Azkaban的编译

2. Azkaban两个服务模式安装

六、Azkaban使用场景案例

1. Command类型单一job示例

2. Command类型多job工作流flow

3. HDFS操作任务

4. MAPREDUCE任务

5. HIVE脚本任务

6. Azkaban的定时任务

7. Azkaban的webUI参数传递


一、准备工作

  1. 安装VMware15虚拟化软件

  2. 安装CentOS 7虚拟机3个

  3. 安装3节点的hadoop-2.6.0-cdh5.14.2集群

  4. 安装了hive

二、Azkaban介绍

1. 为什么需要工作流调度系统

一个完整的数据分析系统通常都是由大量任务单元组成:shell脚本程序,java程序,mapreduce程序、hive脚本等

各任务单元之间存在时间先后及前后依赖关系,为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;

例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下所示:

  • 通过Hadoop先将原始数据同步到HDFS上;
  • 借助MapReduce计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多张Hive表中;
  • 需要对Hive中多个表的数据进行JOIN处理,得到一个明细数据Hive宽表;
  • 将明细数据进行各种统计分析,得到结果报表信息;
  • 需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。

常见的工作流调度实现方式:

  • 简单的任务调度:直接使用linux的crontab来定义;

  • 复杂的任务调度:开发调度平台或使用现成的开源调度系统,比如ooize、azkaban、airflow等。

2. Azkaban介绍

Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。

Azkaban官网:https://azkaban.github.io/

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

它有如下功能特点:

  • Web用户界面

  • 方便上传工作流

  • 方便设置任务之间的关系

  • 调度工作流

  • 认证/授权(权限的工作)

  • 能够杀死并重新启动工作流

  • 模块化和可插拔的插件机制

  • 项目工作区

  • 工作流和任务的日志记录和审计

易于开发使用的功能特点:

  • 提供功能清晰、简单易用的web UI界面

  • 提供job配置文件快速建立任务和任务之间的关系

  • 提供模块化的可插拔机制,原生支持command、java、hive、hadoop

  • 基于java开发,代码结构清晰,易于二次开发

三、Azkaban的基本架构

Azkaban由三部分构成

  • Azkaban Web Server 提供了Web UI,是azkaban的主要管理者,包括 project 的管理,认证,调度,对工作流执行过程的监控等。

  • Azkaban Executor Server 负责具体的工作流和任务的调度提交

  • MySQL用于保存项目、日志或者执行计划之类的信息

四、Azkaban的三种运行模式

1. solo server mode(单机模式)

  • web server 和 executor server运行在一个进程里

  • 最简单的模式,数据库内置的H2数据库,管理服务器和执行服务器都在一个进程中运行,任务量不大项目可以采用此模式。 ​

2. two server mode

  • web server 和 executor server运行在不同的进程

  • 数据库为mysql,管理服务器和执行服务器在不同进程,这种模式下,管理服务器和执行服务器互不影响。 ​

3. multiple executor mode

  • web server 和 executor server运行在不同的进程,executor server有多个

  • 该模式下,执行服务器和管理服务器在不同主机上,且执行服务器可以有多个。

五、Azkaban的安装部署

1. Azkaban的编译

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

注意:我们这里编译需要使用jdk1.8的版本来进行编译,如果编译服务器使用的jdk版本是1.7的,记得切换成jdk1.8,我们这里使用的是jdk8u141这个版本来进行编译。

cd /xsluo/soft/
wget https://github.com/azkaban/azkaban/archive/3.51.0.tar.gz
tar -zxvf 3.51.0.tar.gz -C ../install/
cd /xsluo/install/azkaban-3.51.0/
yum -y install git
yum -y install gcc-c++
./gradlew build installDist -x test

编译之后需要的安装文件列表如下:

1)azkaban-exec-server

编译完成之后得到我们需要的安装包在以下目录下:azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz

/xsluo/install/azkaban-3.51.0/azkaban-exec-server/build/distributions

2)azkaban-web-server

azkaban-web-server存放目录:azkaban-web-server-0.1.0-SNAPSHOT.tar.gz

/xsluo/install/azkaban-3.51.0/azkaban-web-server/build/distributions

3)azkaban-solo-server

azkaban-solo-server存放目录:azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz

/xsluo/install/azkaban-3.51.0/azkaban-solo-server/build/distributions

4)execute-as-user.c

azkaban two server模式下需要的C程序在这个路径下面:execute-as-user.c

/xsluo/install/azkaban-3.51.0/az-exec-util/src/main/c

 

5)数据库脚本文件

数据库脚本文件在这个路径下面:create-all-sql-0.1.0-SNAPSHOT.sql

/xsluo/install/azkaban-3.51.0/azkaban-db/build/install/azkaban-db

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值