我想知道,如果我在本地模式下使用pig(内部称为map reduce),与使用pig-without hadoop.jar文件相比,性能的提高或降低是什么。?
pig-withouthadoop.jar真的不使用hadoop吗???
如果我只想使用没有集群的pig,比如设计一个数据流,那么我应该使用什么呢,?本地模式下的pig或pig-withouthadoop.jar文件??
目前我已经使用pig本地模式编写了我的脚本,在尝试在服务器上部署并在本地模式下设置pig时,我认为在设置pig home变量之前,我还需要在环境变量中设置hadoop\u home
好心的建议。。
提前感谢。:)
2条答案
按热度按时间oug3syen1#
让我按顺序回答你的问题:
1) 当我们谈论性能时,如果我们假设文件大小和pig脚本是恒定的,同时在本地模式和hadoop模式下运行。然后,在本地模式下处理速度肯定会更快,因为所有任务都在单个jvm中执行,但是在hadoop模式下,输入文件将被传送到数据节点,然后pig脚本或udf也将被传送到集群。这将需要更多的时间,尽管在这两种情况下,pig脚本和udf都将在内部转换为map和reduce任务,而且在这两种情况下构造的map和reduce类的数量总是相同的。我们可以使用explain命令来检查这一点。
2) 不,pig内部包含一个hadoop jar包。因此,如果您还没有使用start-all.sh命令启动hadoop,pig将像使用内部hadoop绑定jar一样工作。现在,有趣的部分是,如果您已经安装了hadoop,然后在没有启动hadoop的情况下使用pig,那么有时它将无法工作,因为hadoop版本不匹配。为了安全起见,请显式启动hadoop。所以,pig总是使用hadoop
3) 如果文件大小较小,请始终使用hadoop本地模式。如前所述,pig默认附带hadoopjar。
4) 是的,如果您显式地使用hadoop,那么您需要设置它。
d4so4syb2#
本地模式将在一个jvm中运行pig、hdfs和mr1(或yarn+mr2)。
比较本地模式和集群模式下的性能差异其实并不重要。本地模式通常用于测试或运行可以在1个节点上工作的小型mr作业。
关于pig-without hadoop.jar,我可以理解jar的名字是如何被理解为pig不会使用hadoop的。但事实并非如此。
清管器 Package 与执行相关的两个jar:
jar,这是一个“uber jar”,它还包括所有hadoop和mapreduce jar。你可以把这个jar放在一个还没有安装hadoop的盒子上,然后运行pig(在设置了正确的配置和环境之后)
但是大多数集群已经安装和配置了hadoop。在这种情况下,使用pig-withouthadoop.jar。这个jar的大小是uberjar的一半,原因很明显。
无论哪种方式,您都需要确保hadoop配置hdfs-site.xml、mapred-site.xml等位于pig工作的标准位置(/etc/hadoop/conf/typically)。