一、Azkaban简介
Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。简而言之就是一个工作流调度系统。
为什么需要工作流调度系统?
因为一个完整的数据分析系统通常都是由大量任务单元组成:shell脚本程序,Java程序,mapreduce程序、Hive脚本等
而各任务单元之间存在时间先后及前后依赖关系
为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;
常见工作流调度系统
在Hadoop领域,常见工作流调度系统有:Oozie, Azkaban,Cascading,Hamake
下面的表格对上述四种hadoop工作流调度器的关键特性进行了比较,尽管这些工作流调度器能够解决的需求场景基本一致,但在设计理念,目标用户,应用场景等方面还是存在显著的区别,在做技术选型的时候,可以提供参考
特性 |
Hamake |
Oozie |
Azkaban |
Cascading |
工作流描述语言 |
XML |
XML (xPDL based) |
text file with key/value pairs |
JavaAPI |
依赖机制 |
data-driven |
explicit |
explicit |
explicit |
是否要web容器 |
No |
Yes |
Yes |
No |
进度跟踪 |
console/log messages |
web page |
web page |
javaAPI |
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。
Azkaban功能特点
1 Web用户界面
2 方便上传工作流
3 方便设置任务之间的关系
4 调度工作流
5 认证/授权(权限的工作)
6 能够杀死并重新启动工作流
7 模块化和可插拔的插件机制
8 项目工作区
9 工作流和任务的日志记录和审计
二、Azkaban使用
Azkaban有web界面,输入https://localhost:8443 (注意是https)可以访问Azkaban的用户界面。如图:
首页有四个菜单
- projects:最重要的部分,创建一个工程,所有flows将在工程中运行。
- scheduling:显示定时任务
- executing:显示当前运行的任务
- history:显示历史运行任务
2.1 创建工程
一个工程包含一个或多个flows,一个flow包含多个job。job是你想在azkaban中运行的一个进程,可以是简单的linux命令,可是java程序,也可以是复杂的shell脚本,当然,如果你安装相关插件,也可以运行插件。一个job可以依赖于另一个job,这种多个job和它们的依赖组成的图表叫做flow。点击右上角的create project,在弹出的窗口中填写工程名和描述即可创建工程。
2.2 创建job
创建job很简单,只要创建一个以.job结尾的文本文件就行了。比如:
[java] view
plain copy
- # foo.job
- type=command
- command=echo foo
如果是多个job并且有依赖关系,可以使用dependencies参数指定依赖关系。如:
[java] view
plain copy
- # bar.job
- type=command
- dependencies=foo
- command=echo bar
这样job就创建好了。
2.3 将工作流打包上传
将上面两个job打成zip包,在页面上点击update上传。上传之后如图:
2.4 运行
之后点击绿色的Execute Flow,弹出窗口:
左边的选项卡依次为:
Flow view:流程视图。可以禁用,启用某些job
Notification:定义任务成功或者失败是否发送邮件
Failure Options:定义一个job失败,剩下的job怎么执行
Concurrent:并行任务执行设置
Flow Parametters:参数设置。
左下角的Schedule是设置调度时间,右下角的Execute为直接运行,点击Execute。运行之后在Graph可以看到:
在job List中可以看到个job运行的起始终止时间。
这样工作流的调度就执行完了,Azkaban的使用还是挺简单的吧。
原文地址:https://www.cnblogs.com/cn-superjun/p/9513332.html