2

我对 Hadoop Mapreduce 和 Pig 环境有疑问。在这个线程中,我发现 Pig 拉丁代码被 Pig 系统所干扰。

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

那么,Pig System 究竟何时使用 Hadoop Mapreduce?是在解释 Pig Latin 代码期间的某个地方吗?或者,如果我换一种说法问我的问题:作为 Hadoop Mapreduce 的输入发送的 Pig 的输出是什么?

非常感谢您的回答。

4

2 回答 2

3

MapReduce 的作用可以称为“执行引擎”。Pig 作为一个系统,正在将 Pig Latin 命令翻译成一个或多个 MR 作业。Pig 本身没有能力运行它们——它将这项工作委托给 Hadoop。
我会在编译器和操作系统之间建立类比。编译器在操作系统执行时创建程序。在这个类比中,Pig 是编译器,Hadoop 是操作系统。
Pig 做得更多——它运行作业、监控它们等等。所以除了作为编译器之外,它还可以被视为一个“shell”。
据我所知,从以下角度来看,Pig 并不是 100% 的编译器——它不会根据命令编译 MR 作业。它将有关应该做什么的信息传递给预先存在的工作(我是 99% 但不是 100% 确定)。

于 2012-08-30T10:55:42.183 回答
2

Pigs 的算子实现是使用 Hadoops 的 API。因此,根据配置,作业以本地模式或在 hadoop 集群上执行。Pig 没有将任何输出传递给 Hadoop……它为 map-reduce 作业设置输入类型和数据位置。

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

于 2012-08-30T13:53:25.923 回答