Azkaban整理

1、Azkaban简介

       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。

Azkaban功能特色

 

1 Web用户界面

2 方便上传工做流

3 方便设置任务之间的关系

4 调度工做流

5 认证/受权(权限的工做)

6  可以杀死并从新启动工做流

7  模块化和可插拔的插件机制

8  项目工做区

9 工做流和任务的日志记录和审计

 

2、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
 
  1. # foo.job  
  2. type=command  
  3. command=echo foo  

若是是多个job而且有依赖关系,能够使用dependencies参数指定依赖关系。如:

 

 

[java]  view plain  copy
 
  1. # bar.job  
  2. type=command  
  3. dependencies=foo  
  4. 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的使用仍是挺简单的吧。

相关文章
相关标签/搜索