Azkaban整理

Posted cn-superjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Azkaban整理相关的知识,希望对你有一定的参考价值。

一、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

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 工作流和任务的日志记录和审计

 

二、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的使用还是挺简单的吧。







以上是关于Azkaban整理的主要内容,如果未能解决你的问题,请参考以下文章

Azkaban安装部署及基础使用

Azkaban

azkaban报错:azkaban.utils.UndefinedPropertyException: Missing required property azkaban.native.lib

azkaban参数

客快物流大数据项目(三十八):安装Azkaban-3.71.0

azkaban 配置邮件