⼯作流调度系统——Azkaban
⽂章内容输出来源:拉勾教育⼤数据⾼薪训练营
第 1 节概述
1.1 ⼯作流调度系统
⼀个完整的数据分析系统通常都是由⼤量任务单元组成:
shell脚本程序
java程序
mapreduce程序mysql下载的zip版本安装步骤
hive脚本等
各任务单元之间存在时间先后及前后依赖关系,为了很好地组织起这样的复杂执行计划,需要⼀个⼯作流调度系统来调度任务的执行。
假如,我有这样⼀个需求,某个业务系统每天产⽣20G原始数据,每天都要对其进行处理,处理步骤如下所⽰:
通过Hadoop先将原始数据同步到HDFS上;
借助MapReduce计算框架对原始数据进行转换,⽣成的数据以分区表的形式存储到多张Hive表中;
需要对Hive中多个表的数据进行JOIN处理,得到⼀个明细数据Hive⼤表;
将明细数据进行各种统计分析,得到结果报表信息;
需要将统计分析得到的结果数据同步到业务系统中,供业务调⽤使⽤。
1.2 ⼯作流调度实现⽅式
简单的任务调度
直接使⽤linux的crontab
复杂的任务调度
开发调度平台或使⽤现成的开源调度系统,⽐如Ooize、Azkaban、Airflow等
1.3 Azkaban与Oozie对⽐
对市⾯上最流行的两种调度器,进行对⽐分析。总体来说,Ooize相⽐Azkaban是⼀个重量级的任务调度系统,功能全⾯,但配置使⽤也更复杂(xml)。如果可以不在意某些功能的缺失,轻量级调度器Azkaban是很不错的候选对象。
功能
两者均可以调度mapreduce,pig,java,脚本⼯作流任务
两者均可以定时执⾏⼯作流任务
⼯作流定义
Azkaban使⽤Properties⽂件定义⼯作流
Oozie使⽤XML⽂件定义⼯作流
⼯作流传参
Azkaban⽀持直接传参,例如${input}
Oozie⽀持参数和EL表达式,例如${fs:dirSize(myInputDir)}
定时执⾏
Azkaban的定时执行任务是基于时间的
Oozie的定时执⾏任务基于时间和输⼊数据
资源管理
Azkaban有较严格的权限控制,如⽤户对⼯作流进行读/写/执行等操作
Oozie暂⽆严格的权限控制
⼯作流执⾏
Azkaban有两种运行模式,分别是solo server mode(executor server和web server部署在同⼀台节点)和multi server
mode(executor server和web server可以部署在不同节点)
Oozie作为⼯作流服务器运⾏,⽀持多⽤户和多⼯作流
第 2 节 Azkaban介绍
Azkaban是由linkedin(领英)公司推出的⼀个批量⼯作流任务调度器,⽤于在⼀个⼯作流内以⼀个特定的顺序运行⼀组⼯作和流程。Azkaban使⽤job配置⽂件建⽴任务之间的依赖关系,并提供⼀个易于使⽤的web⽤户界⾯维护和跟踪你的⼯作流。
Azkaban定义了⼀种KV⽂件(properties)格式来建⽴任务之间的依赖关系,并提供⼀个易于使⽤的web⽤户界⾯维护和跟踪你的⼯作流。
有如下功能特点
Web⽤户界⾯
⽅便上传⼯作流
⽅便设置任务之间的关系
调度⼯作流
架构⻆⾊
mysql服务器: 存储元数据,如项⽬名称、项⽬描述、项⽬权限、任务状态、SLA规则等
AzkabanWebServer:对外提供web服务,使⽤户可以通过web⻚⾯管理。职责包括项⽬管理、权限授权、任务调度、监控executor。
AzkabanExecutorServer:负责具体的⼯作流的提交、执行。
第 3 节 Azkaban安装部署
3.1 Azkaban的安装准备⼯作
1 编译
这⾥选⽤azkaban3.51.0这个版本⾃⼰进行重新编译,编译完成之后得到我们需要的安装包进行安装
cd /opt/lagou/software/
wget github/azkaban/azkaban/archive/3.51.
tar -zxvf 3.51. -C ../servers/
cd /opt/lagou/servers/azkaban-3.51.0/
yum -y install git
yum -y install gcc-c++
./gradlew build installDist -x test
Gradlew是⼀个基于Apache Ant和Apache Maven的项⽬⾃动化构建⼯具。-x test 跳过测试。(注意联⽹!下载jar可能会失败、慢)
2 上传编译后的安装⽂件
在linux122节点创建⽬录
mkdir /opt/lagou/servers/azkaban
3.2 solo-server模式部署
1. 单服务模式安装
1 解压
azkaban的solo server使⽤的是⼀个单节点的模式来进行启动服务的,只需要⼀个azkaban-solo- server-0.1.的安装包即可启动,所有的数据信息都是保存在H2这个azkaban默认的数据当中
tar -zxvf azkaban-solo-server-0.1. -C ../../servers/azkaban
2 修改配置⽂件
修改时区
cd /opt/lagou/servers/azkaban/azkaban-solo-server-0.1.0-SNAPSHOT/conf
vim azkaban.properties
default.timezone.id=Asia/Shanghai
修改commonprivate.properties配置⽂件
cd /opt/lagou/servers/azkaban/azkaban-solo-server-0.1.0-SNAPSHOT/plugins/jobtypes
vim commonprivate.properties
execute.as.user=false
azkaban默认需要3G的内存,剩余内存不⾜则会报异常。
3 启动solo-server
cd /opt/lagou/servers/azkaban/azkaban-solo-server-0.1.0-SNAPSHOT
bin/start-solo.sh
4 浏览器⻚⾯访问
⽤户名:azkaban 密码: azkaban
2. 单服务模式使⽤
需求:使⽤azkaban调度我们的shell脚本,执行linux的shell命令具体步骤
开发job⽂件
创建普通⽂本⽂件foo.job,⽂件内容如下
type=command
command=echo 'hello world'
打成压缩包foo.zip,上传压缩包到Azkaban
创建project
指定project名称和描述信息

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。