一、概述
官网:https://azkaban.github.io/
业务场景描述:假设某个业务每天产生100GB原始数据,要对其进行处理,处理步骤如下:
(1)通过Hadoop先将数据同步到HDFS上。
(2)借助MapReduce计算框架对原始数据进行转换,生成的数据以分区表的形式存储在多张Hive表中。
(3)对Hive表的数据进行统计分析,得到结果报表信息
(4)需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。
一个完整的数据分析系统通常由大量任务单元组成,各任务单元之间存在时间先后及前后依赖关系。为了很好的组织这样的复杂执行计划,需要一个工作流调度系统来调度执行。
二、安装部署
Azkaban包含如下3个组件:MySQL服务器、Web服务器和Executor服务器。
- MySQL服务器:存储项目、执行计划、执行情况等信息
- Web服务器:用户通过Web页面实现方便的管理
- Executor服务器:负责具体工作流的提交和执行
安装包:azkaban2.5.rar
1)把Azkaban Web服务器、Azkaban Executor服务器压缩包上传至Linux的”~/Downloads”目录下,并解压
cd ~/Downloads
sudo tar -zxvf azkaban-web-server-2.5.0.tar.gz -C /usr/local/
sudo tar -zxvf azkaban-executor-server-2.5.0.tar.gz -C /usr/local/
sudo chown -R hadoop:hadoop /usr/local/azkaban-web-2.5.0/
sudo chown -R hadoop:hadoop /usr/local/azkaban-executor-2.5.0/
2)Azkaban SQL脚本解压
cd ~/Downloads
sudo tar -zxvf azkaban-sql-script-2.5.0.tar.gz -C /usr/local/
进入mysql,将解压的SQL导入到mysql中:
create database azkaban;
use azkaban;
source /usr/local/azkaban-2.5.0/create-all-sql-2.5.0.sql
3)配置SSL
cd ~
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
#将生成的keystore证书文件拷贝至azkaban-web-server目录中
sudo cp keystore /usr/local/azkaban-web-2.5.0/
4)Azkaban Web服务器配置
配置文件路径:
/usr/local/azkaban-web-2.5.0/conf/azkaban.properties
配置内容:
#Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=web/
default.timezone.id=Asia/Shanghai
#Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml
#Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.maxThreads=25
jetty.ssl.port=8443
jetty.port=8081
jetty.keystore=keystore
jetty.password=000000
jetty.keypassword=000000
jetty.truststore=keystore
jetty.trustpassword=000000
# Azkaban Executor settings
executor.port=12321
# mail settings
mail.sender=
mail.host=
job.failure.email=
job.success.email=
lockdown.create.projects=false
cache.directory=cache
5)Azkaban Executor服务器配置
配置文件路径:
/usr/local/azkaban-executor-2.5.0/conf/azkaban.properties
配置内容:
#Azkaban
default.timezone.id=Asia/Shanghai
# Azkaban JobTypes Plugins
azkaban.jobtype.plugin.dir=plugins/jobtypes
#Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30
6)Azkaban Web服务器启动
cd /usr/local/azkaban-web-2.5.0/
nohup bin/azkaban-web-start.sh
7)Azkaban Executor服务器启动
cd /usr/local/azkaban-executor-2.5.0/
nohup bin/azkaban-executor-start.sh
三、应用实例
3.1 浏览器访问Azkaban服务
访问地址:https://localhost:8443
默认登录用户名和密码:azkaban/azkaban
3.2 创建单一Job工作流
(1)创建Job描述文件:command.job
vim command.job
#command.job
type=command
command=echo "Hello World"
(2)将Job资源文件打包成zip文件
zip first.zip command.job
(3)通过Azkaban的Web管理平台创建Project并上传first.zip压缩包
(4)执行该Job
5)执行完之后会显示执行状态
可以点击job list-Details查看日志
3.3 创建多Job工作流
(1)创建有依赖关系的多个Job描述文件
vim step1.job
#step1.job
type=command
command=echo foo
vim step2.job
#step2.job
type=command
dependencies=step1
command=echo bar
(2)将step1.job、step2.job打包
zip second.zip step1.job step2.job
(3)通过Azkaban的Web管理平台创建Project并上传second.zip压缩包,然后执行该Job
3.4 创建HDFS Job
(1)创建Job描述文件
vim hdfs.job
#hdfs.job
type=command
command=hdfs dfs -mkdir /azkaban_job
3.5 创建Hive Job
(1)创建Job描述文件
vim hive.job
#hive.job
type=command
command=hive -f'hive.hql'
创建hive.hql文件
vim hive.hql
use test;
create table emp_stat as select deptno,count(*) from emp group by deptno;