Azkaban

2019-08-20  本文已影响0人  _Levi__

为什么要有Azkaban?

在数据业务场景,对于数据的处理往往是分阶段处理,而不同的阶段可能采用了不同的技术框架去完成这个业务需求,且可能在不同的阶段要干不同的事。

炒饭(锅) à 吃饭(碗) à 筷子(动手)

要吃饭就要等炒饭先用锅炒好,要用筷子动手吃饭就要等碗里装了饭,这是一个流水线式的过程,如果用设定时间的方式,到了什么时候就拿完去装饭,但如果今天兼职的人特别多,那么炒的饭必然就多了,时间也长了,但是设定时间到了,还没炒好,可是有一堆人挤在厨房喊要饭,问题就出现了。

于是有的人会想,如果有一个监督人帮我去这个监控、通知、控制好整个流程,那样多好啊,厨房就不会给天天催了,也不会发生拥挤的情况。

      小结:一个完整的数据分析系统通常是由大量的任务单元组成,Shell脚本、Java程序、MapReduce程序、Hive脚本等等,各个任务单元之间存在时间先后及前后依赖关系。

      为了很好的组织这样的复杂执行计划,需要一个工作流调度系统来调用执行。

      简单的工作流调度:Liunx的crontab来定义

      复杂的工作流调度:Oozie、Azakaban等。。。

主流几款工作流调度框架

特性HamakeOozieAzkabanCascading

工作流描述语言XMLXML (xPDL based)text file with key/value  pairsJava API

依赖机制data-drivenexplicitexplicitexplicit

是否要web容器NoYesYesNo

进度跟踪console/log messagesweb pageweb pageJava API

Hadoop job调度支持noyesyesyes

运行模式command line utilitydaemondaemonAPI

Pig支持yesyesyesyes

事件通知nononoyes

需要安装noyesyesno

支持的hadoop版本0.18+0.20+currently unknown0.18+

重试支持noworkflownode  evelyesyes

运行任意命令yesyesyesyes

Amazon EMR支持yesnocurrently unknownyes

什么是Azkaban?

      Azkaban是Linkedin开源的一个批量工作流任务调度器,用于在一个工作流内以特定的顺序运行一组工作和流程。

      Azkaban定义了以Key-Value的文件格式来建立任务之间的依赖关系,并提供了一个易于使用的web用户界面维护和跟踪工作流任务。

功能特点

Web用户界面

简单的上传工作流

简单的设置任务关系

      调度工作流

      认证/授权(授权)

      能够杀死并重启工作流

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

      项目工作区

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

      内置任务类型支持command和java

      ……

运行方式

solo

server mode(executor

server和web server部署在同一台节点)

multi

server mode(executor

server和web server可以部署在不同的节点)

案例

hello.job

$ vi hello.job

# hello.job

type=command

command=echo ‘hello’

world.sh

$ vi world.sh

#!/bin/bash

echo ‘world’

world.job

$ vi world.job

# world.job

type=command

dependencies=hello

command=sh world.sh

mr.job

$ vi mr.job

# mr.job

type=command

dependencies=world

command=/opt/module/hadoop-2.5.0-cdh5.3.6/bin/hadoopjar hadoop-mapreduce-examples-2.7.2.jar wordcount /user/creeper /azkout

打包(zip) à 上传、执行

使用注意事项

1.时区

2.必须用Https访问,需要配置SSL

上一篇 下一篇

猜你喜欢

热点阅读