Azkaban是由Linkedin开源的一个批量工做流任务调度器。用于在一个工做流内以一个特定的顺序运行一组工做和流程。Azkaban定义了一种KV文件格式来创建任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工做流。简而言之就是一个工做流调度系统。java
由于一个完整的数据分析系统一般都是由大量任务单元组成:shell脚本程序,Java程序,mapreduce程序、Hive脚本等node
而各任务单元之间存在时间前后及先后依赖关系linux
为了很好地组织起这样的复杂执行计划,须要一个工做流调度系统来调度执行;web
在Hadoop领域,常见工做流调度系统有:Oozie, Azkaban,Cascading,Hamakeshell
下面的表格对上述四种hadoop工做流调度器的关键特性进行了比较,尽管这些工做流调度器可以解决的需求场景基本一致,但在设计理念,目标用户,应用场景等方面仍是存在显著的区别,在作技术选型的时候,能够提供参考ide
特性模块化 |
Hamakeoop |
Ooziespa |
Azkaban.net |
Cascading |
工做流描述语言 |
XML |
XML (xPDL based) |
text file with key/value pairs |
Java API |
依赖机制 |
data-driven |
explicit |
explicit |
explicit |
是否要web容器 |
No |
Yes |
Yes |
No |
进度跟踪 |
console/log messages |
web page |
web page |
java API |
Hadoop job调度支持 |
no |
yes |
yes |
yes |
运行模式 |
command line utility |
daemon |
daemon |
API |
Pig支持 |
yes |
yes |
yes |
yes |
事件通知 |
no |
no |
no |
yes |
须要安装 |
no |
yes |
yes |
no |
支持的hadoop版本 |
0.18+ |
0.20+ |
currently unknown |
0.18+ |
重试支持 |
no |
workflownode evel |
yes |
yes |
运行任意命令 |
yes |
yes |
yes |
yes |
Amazon EMR支持 |
yes |
no |
currently unknown |
yes |
其中比较经常使用的为Azkaban和Oozie。
1 Web用户界面
2 方便上传工做流
3 方便设置任务之间的关系
4 调度工做流
5 认证/受权(权限的工做)
6 可以杀死并从新启动工做流
7 模块化和可插拔的插件机制
8 项目工做区
9 工做流和任务的日志记录和审计
Azkaban有web界面,输入https://localhost:8443 (注意是https)能够访问Azkaban的用户界面。如图:
首页有四个菜单
建立job很简单,只要建立一个以.job结尾的文本文件就好了。好比:
若是是多个job而且有依赖关系,能够使用dependencies参数指定依赖关系。如:
这样job就建立好了。
将上面两个job打成zip包,在页面上点击update上传。上传以后如图:
以后点击绿色的Execute Flow,弹出窗口:
左边的选项卡依次为:
左下角的Schedule是设置调度时间,右下角的Execute为直接运行,点击Execute。运行以后在Graph能够看到:
在job List中能够看到个job运行的起始终止时间。
这样工做流的调度就执行完了,Azkaban的使用仍是挺简单的吧。