Hadoop工作流引擎
2015-12-26 12:54
288 查看
前面介绍的JobControl和ChainMapper/ChainReducer仅可看作运行工作流的工具。它们只具备最简单的工作流引擎功能,比如工作流描述、简单的作业调度等。为了增强Hadoop支持工作流的能力,在Hadoop之上出现了很多开源的工作流引擎,主要可概括为两类:隐式工作流引擎和显式工作流引擎。
隐式工作流引擎在MapReduce之上添加了一个语言抽象层,允许用户使用更简单的方式编写应用程序,比如SQL、脚本语言等。这样,用户无须关注MapReduce的任何细节,降低了用户的学习成本,并可大大提高开发效率。典型的代表有Hive、Pig和Cascading。它们的架构如图3-29所示,从上往下分为以下三层。
功能描述层:直接面向用户提供了一种简单的应用程序编写方法,比如,Hive使用SQL,Pig使用Pig Latin脚本语言,Cascading提供了丰富的Java API。
作业生成器:作业生成器主要将上层的应用程序转化成一批MapReduce作业。这一批MapReduce存在相互依赖关系,实际上是一个DAG。
调度引擎:调度引擎直接构建于MapReduce环境之上,将作业生成器生成的DAG按照依赖关系提交到MapReduce上运行。
显式工作流引擎直接面向MapReduce应用程序开发者,提供了一种作业依赖关系描述方式,并能够按照这种描述方式进行作业调度。典型的代表有Oozie和Azkaban。它们的架构如图3-30所示,从上往下分为以下两层。
工作流描述语言:工作流描述语言用于描述作业的依赖关系。Oozie采用了XML,而Azkaban采用了key/value格式的文本文件。需要注意的是,这里的作业不仅仅是指MapReduce作业,还包括Shell命令、Pig脚本等。也就是说,一个MapReduce可能依赖一个Pig脚本或者Shell命令。
调度引擎:同隐式工作流引擎的调度引擎功能相同,即根据作业的依赖关系完成作业调度。
表3-4对比了显式工作流引擎与Hadoop自带的JobControl的不同之处。尽管它们均用于解决Hadoop工作流调度问题,但是在设计思路、使用方法、应用场景等方面都存在明显的不同。
表3-4 显式工作流引擎与JobControl对比
(续)
隐式工作流引擎在MapReduce之上添加了一个语言抽象层,允许用户使用更简单的方式编写应用程序,比如SQL、脚本语言等。这样,用户无须关注MapReduce的任何细节,降低了用户的学习成本,并可大大提高开发效率。典型的代表有Hive、Pig和Cascading。它们的架构如图3-29所示,从上往下分为以下三层。
功能描述层:直接面向用户提供了一种简单的应用程序编写方法,比如,Hive使用SQL,Pig使用Pig Latin脚本语言,Cascading提供了丰富的Java API。
作业生成器:作业生成器主要将上层的应用程序转化成一批MapReduce作业。这一批MapReduce存在相互依赖关系,实际上是一个DAG。
调度引擎:调度引擎直接构建于MapReduce环境之上,将作业生成器生成的DAG按照依赖关系提交到MapReduce上运行。
显式工作流引擎直接面向MapReduce应用程序开发者,提供了一种作业依赖关系描述方式,并能够按照这种描述方式进行作业调度。典型的代表有Oozie和Azkaban。它们的架构如图3-30所示,从上往下分为以下两层。
工作流描述语言:工作流描述语言用于描述作业的依赖关系。Oozie采用了XML,而Azkaban采用了key/value格式的文本文件。需要注意的是,这里的作业不仅仅是指MapReduce作业,还包括Shell命令、Pig脚本等。也就是说,一个MapReduce可能依赖一个Pig脚本或者Shell命令。
调度引擎:同隐式工作流引擎的调度引擎功能相同,即根据作业的依赖关系完成作业调度。
表3-4对比了显式工作流引擎与Hadoop自带的JobControl的不同之处。尽管它们均用于解决Hadoop工作流调度问题,但是在设计思路、使用方法、应用场景等方面都存在明显的不同。
表3-4 显式工作流引擎与JobControl对比
(续)
相关文章推荐
- openwrt下部署adbyby去广告大师 免luci 带自启动,自动开启透明代理
- Linux自动化运维部署+运维
- Centos6.5安装RVM
- linux在线升级yum命令的使用
- (三)主Makefile解析
- (三)openwrt主Makefile解析
- linux--文件夹下批量改动IP
- (总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解
- 71.windbg-转换shellcode为汇编
- opencv学习之threshold函数
- [linux]ubutnu12.04 下安装jdk1.7
- 在Linux(Ubuntu/openSUSE/CentOS)下配置ASP.NET(Apache + Mono)转载+补充
- Awesome Hadoop
- 在Linux服务器上安装配置socks5代理的教程
- sympy官方文档网站无法打开问题解决
- NSOperation与GCD
- Nginx/LVS/HAProxy负载均衡软件的优缺点详解
- Linux如何kill杀掉进程
- 监控提示message
- 私用 Hadoop BigTable