猪本地模式与猪之间的区别 - 没有hadoop.jar

时间:2015-03-30 16:23:09

标签: hadoop mapreduce apache-pig bigdata dataflow

我想知道如果我在本地模式下使用pig(内部调用Map reduce)与使用PIG-withouthadoop.jar文件相比,性能增益或损失是什么。?

PIG-withouthadoop.jar真的不使用hadoop ???

如果我只想使用没有群集的Pig,比如设计一个数据流,那么我应该使用什么?猪在本地模式下或猪 - 无hadoop.jar文件??

目前我已经使用pig本地模式编写了我的脚本,在尝试在服务器中部署并在本地模式下设置PIG时,我认为在设置PIG_HOME变量之前我还需要在环境变量中设置HADOOP_HOME

请咨询..

提前致谢。 :)

2 个答案:

答案 0 :(得分:2)

本地模式将在一个JVM中运行Pig,HDFS和MR1(或YARN + MR2)。

比较 local cluster 模式的性能差异并不十分相关。本地模式通常用于测试或运行可在1个节点上运行的小型MR作业。

关于 pig-withouthadoop.jar ,我可以看到jar的名称如何被解释为Pig将不会使用Hadoop。但事实并非如此。

Pig打包两个与执行相关的罐子:

  • pig.jar ,这是一个“超级罐子”,还包括所有hadoop和mapreduce罐子。你可以把这个罐子放在一个没有安装hadoop的盒子上,并运行猪(在设置正确的配置和环境之后。)
  • 但是大多数群集已经安装并配置了hadoop。在这种情况下,您使用 pig-withouthadoop.jar 。由于显而易见的原因,这个罐子的尺寸只有超级罐子的一半。

您需要确保hadoop配置的任何一种方式 hdfs-site.xml,mapred-site.xml 等都在标准位置( / etc / hadoop / conf / 通常)让猪工作。

答案 1 :(得分:2)

让我按顺序回答你的问题:

1)当我们谈论性能时,如果我们假设文件大小和Pig脚本是恒定的,那么在本地模式和Hadoop模式下运行。然后,在本地模式下处理将更快,因为所有任务都在单个JVM中执行,但在Hadoop模式下,输入文件将被传送到数据节点,然后Pig脚本或UDF也将获得进入集群。这将需要更多的时间,但在这两种情况下,猪脚本和UDF将在内部转换为map和reduce任务,并且在这两种情况下构造的map和reduce类的数量总是相同的。我们可以使用EXPLAIN命令来检查这个。

2)否.Pig内部包含一捆Hadoop罐子。因此,如果您尚未使用start-all.sh命令启动Hadoop,则pig将使用内部Hadoop捆绑的jar。现在,有趣的是,如果你已经安装了hadoop,然后在没有启动Hadoop的情况下使用pig,那么有时它会无法工作,因为Hadoop版本不匹配。所以要安全地明确启动Hadoop。所以,Pig总是使用Hadoop。 :)

3)如果文件大小较小,请始终使用Hadoop本地模式。如前所述,Pig默认配有Hadoop jar。

4)是的,如果你明确使用Hadoop,你需要设置它。