究竟Pig何时使用Hadoop MapReduce环境?

时间:2012-08-30 08:49:30

标签: hadoop mapreduce apache-pig

我对Hadoop Mapreduce和Pig环境有疑问。在this thread我发现猪拉丁语代码是由猪系统插入的。

首先我认为Pig使用map和reduce方法创建.jar文件,然后将此文件“发送”到Hadoop Mapreduce环境以运行mapreduce作业(这是Pig开发人员的未来工作)。

那么,当猪系统使用Hadoop Mapreduce时呢?它是在解释Pig Latin代码的某个地方吗?或者,如果我用另一个词问我的问题:Pig的输出是什么,作为Hadoop Mapreduce的输入发送?

非常感谢您的回答。

2 个答案:

答案 0 :(得分:3)

MapReduce的作用可以称为“执行引擎”。猪作为一个系统正在翻译猪拉丁语 命令到一个或多个MR作业。 Pig本身没有运行它们的能力 - 它将这项工作委托给Hadoop。
我会在编译器和操作系统之间建立类比。 OS执行时编译器创建程序。在这个类比中,Pig是编译器,Hadoop是OS。
猪做的更多 - 它运行作业,监视它们等等。因此除了编译器之外,它可以被视为“shell”。
在我的理解中,从以下角度来看,Pig不是100%编译器 - 它不会根据命令编译MR作业。它传递了有关应该对已存在的工作做什么的信息(我99%,但不是100%肯定)。

答案 1 :(得分:2)

Pigs的运营商实施正在使用Hadoops的API。因此,根据配置,作业以本地模式或hadoop集群执行。 Pig不会将任何输出传递给Hadoop ...它会为map-reduce作业设置输入类型和数据位置。

Pig Latin提供了一组标准的数据处理操作,例如join,filter,group by,order by,union等,然后映射到map-reduce作业。 Pig Latin脚本描述了有向无环图(DAG),其中边是数据流,节点是处理数据的运算符。