Azkaban(一)Azkaban的基础介绍

1、为何须要工做流调度器

一、一个完整的数据分析系统一般都是由大量任务单元组成: shell 脚本程序,java 程序,mapreduce 程序、hive 脚本等java

二、各任务单元之间存在时间前后及先后依赖关系node

三、为了很好地组织起这样的复杂执行计划,须要一个工做流调度系统来调度执行python

例如,咱们可能有这样一个需求,某个业务系统天天产生 20G 原始数据,咱们天天都要对其进行处理,处理步骤以下所示:linux

  一、 经过 Hadoop 先将原始数据同步到 HDFS 上;web

  二、 借助 MapReduce 计算框架对原始数据进行清洗转换,生成的数据以分区表的形式存储 到多张 Hive 表中;ajax

  三、 须要对 Hive 中多个表的数据进行 JOIN 处理,获得一个明细数据 Hive 大表;sql

  四、 将明细数据进行各类统计分析,获得结果报表信息;shell

  五、 须要将统计分析获得的结果数据同步到业务系统中,供业务调用使用。浏览器

2、工做流调度实现方式

简单的任务调度:直接使用 linux 的 crontab 来定义;服务器

复杂的任务调度:开发调度平台或使用现成的开源调度系统,好比 ooize、azkaban 等

3、常见工做流调度系统

市面上目前有许多工做流调度器 在 hadoop 领域,常见的工做流调度器有 Oozie, Azkaban,Cascading,Hamake 等

4、各类调度工具对比

下面的表格对上述四种 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


5、Azkaban 与 Oozie 对比

对市面上最流行的两种调度器,给出如下详细对比,以供技术选型参考。整体来讲,ooize相比azkaban是一个重量级的任务调度系统,功能全面,但配置使用也更复杂。若是能够不在乎某些功能的缺失,轻量级调度器azkaban是很不错的候选对象。 
详情以下:

功能 

二者都可以调度mapreduce,pig,java,脚本工做流任务 
二者都可以定时执行工做流任务

工做流定义 

Azkaban使用Properties文件定义工做流 
Oozie使用XML文件定义工做流

工做流传参 

Azkaban支持直接传参,例如inputOozieELinputOozie支持参数和EL表达式,例如{fs:dirSize(myInputDir)}

定时执行 

Azkaban的定时执行任务是基于时间的 
Oozie的定时执行任务基于时间和输入数据

资源管理 

Azkaban有较严格的权限控制,如用户对工做流进行读/写/执行等操做 
Oozie暂无严格的权限控制

工做流执行 

Azkaban有两种运行模式,分别是solo server mode(executor server和web server部署在同一台节点)和multi server mode(executor server和web server能够部署在不一样节点) 
Oozie做为工做流服务器运行,支持多用户和多工做流

工做流管理 

Azkaban支持浏览器以及ajax方式操做工做流 
Oozie支持命令行、HTTP REST、Java API、浏览器操做工做流

6、Azkaban 介绍

Azkaban是由Linkedin开源的一个批量工做流任务调度器。用于在一个工做流内以一个特定的顺序运行一组工做和流程。Azkaban定义了一种KV文件格式来创建任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工做流。 
它有以下功能特色: 
  一、Web用户界面 
  二、方便上传工做流 
  三、方便设置任务之间的关系 
  四、调度工做流 
  五、认证/受权(权限的工做) 
  六、可以杀死并从新启动工做流 
  七、模块化和可插拔的插件机制 
  八、项目工做区 
  九、工做流和任务的日志记录和审计

7、azkaban调度的任务有可能有那些类型

  一、shell脚本

  二、java程序

  三、MR程序

  四、spark程序

  五、hive的sql

  六、python脚本

  七、sqoop任务

相关文章
相关标签/搜索