Hadoop工作流引擎

前面介绍的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对比
 

(续)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值