目录
一、准备工作
-
安装VMware15虚拟化软件
-
安装CentOS 7虚拟机3个
-
安装3节点的hadoop-2.6.0-cdh5.14.2集群
-
安装了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