我想知道如果我在本地模式下使用pig(内部调用Map reduce)与使用PIG-withouthadoop.jar文件相比,性能增益或损失是什么。?
PIG-withouthadoop.jar真的不使用hadoop ???
如果我只想使用没有群集的Pig,比如设计一个数据流,那么我应该使用什么?猪在本地模式下或猪 - 无hadoop.jar文件??
目前我已经使用pig本地模式编写了我的脚本,在尝试在服务器中部署并在本地模式下设置PIG时,我认为在设置PIG_HOME变量之前我还需要在环境变量中设置HADOOP_HOME
请咨询..
提前致谢。 :)
答案 0 :(得分:2)
本地模式将在一个JVM中运行Pig,HDFS和MR1(或YARN + MR2)。
比较 local 与 cluster 模式的性能差异并不十分相关。本地模式通常用于测试或运行可在1个节点上运行的小型MR作业。
关于 pig-withouthadoop.jar ,我可以看到jar的名称如何被解释为Pig将不会使用Hadoop。但事实并非如此。
Pig打包两个与执行相关的罐子:
您需要确保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,你需要设置它。