楼主: ada89k
1299 2

[Hadoop] 【数据分析师分享】Azkaban简介与使用 [推广有奖]

  • 3关注
  • 24粉丝

内部工作人员

院士

42%

还不是VIP/贵宾

-

威望
2
论坛币
14979 个
学术水平
84 点
热心指数
88 点
信用等级
54 点
经验
22049 点
帖子
1364
精华
1
在线时间
1251 小时
注册时间
2017-2-7
最后登录
2017-12-14

ada89k 在职认证  发表于 2017-7-29 17:26:02 |显示全部楼层

数据分析师分享: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

  
  

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的用户界面。如图:

20170725153715269 .jpg


首页有四个菜单
1.projects:最重要的部分,创建一个工程,所有flows将在工程中运行。
2.scheduling:显示定时任务
3.executing:显示当前运行的任务
4.history:显示历史运行任务

2.1 创建工程
        一个工程包含一个或多个flows,一个flow包含多个job。job是你想在azkaban中运行的一个进程,可以是简单的linux命令,可是java程序,也可以是复杂的shell脚本,当然,如果你安装相关插件,也可以运行插件。一个job可以依赖于另一个job,这种多个job和它们的依赖组成的图表叫做flow。点击右上角的create project,在弹出的窗口中填写工程名和描述即可创建工程。

20170725164120024.jpg



2.2 创建job
创建job很简单,只要创建一个以.job结尾的文本文件就行了。比如:

# foo.job
type=command  
command=echo foo  

如果是多个job并且有依赖关系,可以使用dependencies参数指定依赖关系。如:

# bar.job
type=command  
dependencies=foo  
command=echo bar  
这样job就创建好了。

2.3 将工作流打包上传
     将上面两个job打成zip包,在页面上点击update上传。上传之后如图:

20170725165241890.jpg


2.4 运行
      之后点击绿色的Execute Flow,弹出窗口:

20170725170751873.jpg


左边的选项卡依次为:
Flow view:流程视图。可以禁用,启用某些job
Notification:定义任务成功或者失败是否发送邮件
Failure Options:定义一个job失败,剩下的job怎么执行
Concurrent:并行任务执行设置
Flow Parametters:参数设置。
左下角的Schedule是设置调度时间,右下角的Execute为直接运行,点击Execute。运行之后在Graph可以看到:

20170725165455239.jpg


在job List中可以看到个job运行的起始终止时间。

20170725165650673.jpg


这样工作流的调度就执行完了,Azkaban的使用还是挺简单的吧。


支持楼主:购买VIP购买贵宾 购买后,论坛将把您花费的资金全部奖励给楼主,以表示您对TA发好贴的支持
 
载入中......
已有 1 人评分经验 学术水平 收起 理由
Nicolle + 100 + 1 精彩帖子

总评分: 经验 + 100  学术水平 + 1   查看全部评分

stata SPSS
西门高 发表于 2017-8-1 17:15:46 |显示全部楼层
谢谢分享
回复

使用道具 举报

cometwx 发表于 2017-10-27 16:29:21 |显示全部楼层
感谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

GMT+8, 2017-12-15 20:19