【问题标题】:When exactly Pig uses Hadoop MapReduce environment?Pig 何时使用 Hadoop MapReduce 环境?
【发布时间】:2012-08-30 08:49:30
【问题描述】:
我对 Hadoop Mapreduce 和 Pig 环境有疑问。在this thread 中,我发现Pig 拉丁语代码被Pig 系统插入。
首先我认为 Pig 创建带有 map 和 reduce 方法的 .jar 文件,然后将该文件“发送”到 Hadoop Mapreduce 环境以运行 mapreduce 作业(这是 Pig 开发人员未来的工作)。
那么,Pig System 究竟何时使用 Hadoop Mapreduce?是在解释 Pig Latin 代码期间的某个地方吗?或者,如果我换一种说法问我的问题:作为 Hadoop Mapreduce 的输入发送的 Pig 的输出是什么?
非常感谢您的回答。
【问题讨论】:
标签:
hadoop
mapreduce
apache-pig
【解决方案1】:
MapReduce 的作用可以称为“执行引擎”。猪作为一个系统正在翻译猪拉丁语
命令到一个或多个 MR 作业中。 Pig 本身没有能力运行它们——它将这项工作委托给 Hadoop。
我会在编译器和操作系统之间建立类比。编译器在操作系统执行时创建程序。在这个类比中,Pig 是编译器,Hadoop 是操作系统。
Pig 做得更多——它运行作业、监视它们等等。所以除了作为编译器之外,它还可以被视为一个“shell”。
据我所知,从以下角度来看,Pig 并不是 100% 的编译器——它不会根据命令编译 MR 作业。它将有关应该做什么的信息传递给预先存在的工作(我 99% 但不是 100% 确定)。
【解决方案2】:
Pigs 的算子实现是使用 Hadoops 的 API。因此,根据配置,作业以本地模式或在 hadoop 集群上执行。 Pig 没有将任何输出传递给 Hadoop……它为 map-reduce 作业设置输入类型和数据位置。
Pig Latin 提供了一组标准的数据处理操作,例如 join、filter、group by、order by、union 等,然后将其映射到 map-reduce 作业。 Pig Latin 脚本描述了一个有向无环图 (DAG),其中边是数据流,节点是处理数据的算子。