azkaban的简介
azkaban官网:
https://azkaban.github.io/
Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
作者:FantJ
链接:https://www.jianshu.com/p/c7d6bf6191e7
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
为什么需要工作流调度系统
- 一个完整的数据分析系统通常都是由大量任务单元组成:shell脚本程序,java程序,mapreduce程序、hive脚本等。
- 各任务单元之间存在时间先后及前后依赖关系。
- 为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行。
工作流调度实现方式
简单的任务调度:直接使用linux的crontab来定义;
复杂的任务调度:开发调度平台或使用现成的开源调度系统,比如ooize、azkaban、airflow等
各种调度工具特性对比
Azkaban与Oozie对比
对市面上最流行的两种调度器,给出以下详细对比,以供技术选型参考。总体来说,ooize相比azkaban是一个重量级的任务调度系统,功能全面,但配置使用也更复杂。如果可以不在意某些功能的缺失,轻量级调度器azkaban是很不错的候选对象。
详情如下:
-
功能
两者均可以调度mapreduce,pig,java,脚本工作流任务
两者均可以定时执行工作流任务 -
工作流定义
Azkaban使用Properties文件定义工作流
Oozie使用XML文件定义工作流 -
工作流传参
Azkaban支持直接传参,例如 i n p u t O o z i e 支 持 参 数 和 E L 表 达 式 , 例 如 {input} Oozie支持参数和EL表达式,例如 inputOozie支持参数和EL表达式,例如{fs:dirSize(myInputDir)} -
定时执行
Azkaban的定时执行任务是基于时间的
Oozie的定时执行任务基于时间和输入数据 -
资源管理
Azkaban有较严格的权限控制,如用户对工作流进行读/写/执行等操作
Oozie暂无严格的权限控制 -
工作流执行
Azkaban有两种运行模式,分别是solo server mode(executor server和web server部署在同一台节点)和multi server mode(executor server和web server可以部署在不同节点)
Oozie作为工作流服务器运行,支持多用户和多工作流 -
工作流管理
Azkaban支持浏览器以及ajax方式操作工作流
Oozie支持命令行、HTTP REST、Java API、浏览器操作工作流
azkaban的编译
1、下载源码包,选择版本是3.15.0
cd /export/softwares/
wget https://github.com/azkaban/azkaban/archive/3.51.0.tar.gz
2、解压源码包
tar -zxvf 3.51.0.tar.gz -C ../servers/
3、进行编译
cd /export/servers/azkaban-3.51.0/
yum -y install git