分布式计算(三)Azkaban介绍
目录
一、为什么需要工作流调度器
二、工作流调度实现方式
三、常见工作流调度系统
四、各种调度工具对比
五、Azkaban 与 Oozie 对比
1. 功能
2. 工作流定义
3. 工作流传参
4. 定时执行
5. 资源管理
6. 工作流执行
7. 工作流管理
六、Azkaban 介绍
七、Azkaban调度的任务类型
一、为什么需要工作流调度器
1. 一个完整的数据分析系统通常都是由大量任务单元组成: Shell 脚本程序,Java 程序,MapReduce 程序、Hive 脚本等
2. 各任务单元之间存在时间先后及前后依赖关系
3. 为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行
例如,我们可能有这样一个需求,某个业务系统每天产生 20G 原始数据,我们每天都要对其进行处理,处理步骤如下所示:
1)通过 Hadoop 先将原始数据同步到 HDFS 上;
2)借助 MapReduce 计算框架对原始数据进行清洗转换,生成的数据以分区表的形式存储 到多张 Hive 表中;
3)需要对 Hive 中多个表的数据进行 JOIN 处理,得到一个明细数据 Hive 大表;
4)将明细数据进行各种统计分析,得到结果报表信息;
5)需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。
二、工作流调度实现方式
简单的任务调度:直接使用 Linux 的 crontab 来定义;
复杂的任务调度:开发调度平台或使用现成的开源调度系统,比如 Oozie、Azkaban等
三、常见工作流调度系统
市面上目前有许多工作流调度器 在 hadoop 领域,常见的工作流调度器有 Oozie、Azkaban、Cascading、Hamake 等
四、各种调度工具对比
下面的表格对上述四种 hadoop 工作流调度器的关键特性进行了比较,尽管这些工作流调度 器能够解决的需求场景基本一致,但在设计理念,目标用户,应用场景等方面还是存在显著 的区别,在做技术选型的时候,可以提供参考
| 特性 | Hamake | Oozie | Azkaban | Cascading |
| 工作流描述语言 | XML | XML (xPDL based) | ext 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 对比
对市面上最流行的两种调度器,给出以下详细对比,以供技术选型参考。总体来说,ooize相比azkaban是一个重量级的任务调度系统,功能全面,但配置使用也更复杂。如果可以不在意某些功能的缺失,轻量级调度器azkaban是很不错的候选对象。
详情如下:
1. 功能
两者均可以调度mapreduce、pig、java、脚本工作流任务
两者均可以定时执行工作流任务
2. 工作流定义
Azkaban使用Properties文件定义工作流
Oozie使用XML文件定义工作流
3. 工作流传参
Azkaban支持直接传参,例如${input}
Oozie支持参数和EL表达式,例如${fs:dirSize(myInputDir)}
4. 定时执行
Azkaban的定时执行任务是基于时间的
Oozie的定时执行任务基于时间和输入数据
5. 资源管理
Azkaban有较严格的权限控制,如用户对工作流进行读/写/执行等操作
Oozie暂无严格的权限控制
6. 工作流执行
Azkaban有三种运行模式:
- solo server mode:最简单的模式,数据库内置的H2数据库,管理服务器和执行服务器都在一个进程中运行,任务量不大项目可以采用此模式。
- two server mode:数据库为mysql,管理服务器和执行服务器在不同进程,这种模式下,管理服务器和执行服务器互不影响
- multiple executor mode:该模式下,执行服务器和管理服务器在不同主机上,且执行服务器可以有多个
我这次采用第二种模式,管理服务器、执行服务器分进程,但在同一台主机上。
Oozie作为工作流服务器运行,支持多用户和多工作流
7. 工作流管理
Azkaban支持浏览器以及ajax方式操作工作流
Oozie支持命令行、HTTP REST、Java API、浏览器操作工作流
六、Azkaban 介绍
Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
它有如下功能特点:
- Web用户界面
- 方便上传工作流
- 方便设置任务之间的关系
- 调度工作流
- 认证/授权(权限的工作)
- 能够杀死并重新启动工作流
- 模块化和可插拔的插件机制
- 项目工作区
- 工作流和任务的日志记录和审计
七、Azkaban调度的任务类型
- Shell脚本
- Java程序
- MR程序
- Spark程序
- Hive的SQL
- Python脚本
- Sqoop任务
分布式计算(三)Azkaban介绍的更多相关文章
- Azkaban介绍+安装部署+实战案例
Azkaban介绍 什么是azkaban?1.工作流的作业调度系统2.通过k.v指令写法描述工作流节点3.可以通过web界面去管理工作流 Azkaban安装部署 2.3.1 准备工作 Azkaban ...
- 老猿学5G扫盲贴:推荐三篇介绍HTTP2协议相关的文章
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 5G中的服务化接口调用都是基于HTTP2协议的,老 ...
- WPF入门教程系列三——Application介绍(续)
接上文WPF入门教程系列二——Application介绍,我们继续来学习Application 三.WPF应用程序的关闭 WPF应用程序的关闭只有在应用程序的 Shutdown 方法被调用时,应用程序 ...
- Jenkins学习三:介绍一些Jenkins的常用功能
Jenkins其实就是一个工具,这个工具的作用就是调用各种其他的工具来达成你的目的. 1.备份.迁移.恢复jenkins 首先找到JENKINS_HOME,因为Jenkins的所有的数据都是以文件的形 ...
- Spring整合Jms学习(三)_MessageConverter介绍
1.4 消息转换器MessageConverter MessageConverter的作用主要有双方面,一方面它能够把我们的非标准化Message对象转换成我们的目标Message对象,这主要 ...
- React文档(三)介绍JSX
我们先看看这个变量声明: const element = <h1>Hello, world!</h1>; 这个有趣的标签语法既不是字符串也不是HTML. 这种写法叫做JSX,这 ...
- (三)介绍简单的ROS命令
1.ROS文件系统中的基本概念 Packages: Package是ROS系统中最底层最基本的组织,里面存放各种文件:库.工具.可执行文件等.Manifest: 一个package描述xml文件,定义 ...
- Azkaban学习之路 (一)Azkaban的基础介绍
一.为什么需要工作流调度器 1.一个完整的数据分析系统通常都是由大量任务单元组成: shell 脚本程序,java 程序,mapreduce 程序.hive 脚本等 2.各任务单元之间存在时间先后及前 ...
- Azkaban(一)Azkaban的基础介绍
一.为什么需要工作流调度器 1.一个完整的数据分析系统通常都是由大量任务单元组成: shell 脚本程序,java 程序,mapreduce 程序.hive 脚本等 2.各任务单元之间存在时间先后及前 ...
随机推荐
- 设计模式之模板方法模式(TemplateMethod)
模板方法模式使用继承来实现模式的功能,在基类使用一个方法来定义算法的各个步骤,这些步骤(方法)的具体实现会放到子类中,通过这样来实现不同算法对象的算法拼合,完成该对象整体算法的实现. 作用 模板方法中 ...
- 设计模式之策略模式(Strategy)
策略模式将不同算法的逻辑抽象接口封装到一个类中,通过组合和多态结合的方式来进行不同算法具体的实现. 作用 策略模式是一种定义一系列算法的方法,Strategy类层次为Context定义了一系列的可重用 ...
- Electron 应用入门 (参考官方示例)
Electron 应用 1.去官方下案例 # 克隆示例项目的仓库 $ git clone https://github.com/electron/electron-quick-start # 进入这个 ...
- 多语言网站利器 rel="alternate" hreflang="x"
下面是我在浏览网站时无意看到的,然后就搜了一下,感觉内容不错但我还没有测试,就转载过来做个备注,有时间了在翻过来看看 rel="alternate" hreflang=" ...
- 【读书笔记】iOS-MVC
用户的每一个动作都是以一个View的Action方式传递给Controller,然后,Controller再发送消息通知Model做出响应的逻辑处理,当Model层面上的业务逻辑处理有了结果之后,Mo ...
- 获取url参数的方法(web)
//获取url参数的方法(web) function GetQueryString(name) { var reg = new RegExp("(^|&)" + n ...
- Angular 2基础(一) 环境搭建
Angular2是一款开源JavaScript库,由Google维护,用来创建页面应用程序.正式发布于2016年9月,基于ES6开发. 一.准备工作 使用Angular2开发,需要预先做一些配置上的配 ...
- jpa 联表查询 返回自定义对象 hql语法 原生sql 语法 1.11.9版本
-----业务场景中经常涉及到联查,jpa的hql语法提供了内连接的查询方式(不支持复杂hql,比如left join ,right join). 上代码了 1.我们要联查房屋和房屋用户中间表,通过 ...
- (网页)readonly和disabled的区别(转)
转自脚本之家: 标签的readonly和disabled属性的区别: 在表单元素中,readonly和disable有类似之处,因为它们都可以将一些表单元素设置为"不可用"状态,当 ...
- sql最简单的查询语句
-- 2 **************************************************** -- 最简单的查询语句 -- 2.1 ----------------------- ...