我在具有3个节点(1个主节点和2个从节点)的Hadoop集群上按顺序运行三个MapReduce作业(其中一个是对另一个的输入)。
显然,单个作业在单个节点集群上完成所需的总时间比上面少了很多。可能的原因是什么?是网络延迟吗?它在100以太网上运行。如果我增加节点的数量,会有帮助吗?
我使用Hadoop流,我的代码在python2.7中。
发布于 2013-12-29 03:02:24
MapReduce并不是真正用于处理那么小的输入数据集。MapReduce框架必须确定哪些节点将运行任务,然后旋转JVM来运行每个单独的Map并减少任务(任务的数量取决于数据集的大小)。这通常有几十秒的延迟。在节点之间传送非本地数据也很昂贵,因为它涉及到通过有线发送数据。对于如此小的数据集,在分布式集群中设置MapReduce作业的开销可能高于作业本身的运行时。在单个节点上,您只看到在本地机器上启动任务的开销,而不需要通过网络进行任何数据复制,这就是为什么任务在一台机器上完成得更快的原因。如果您有多千兆字节的文件,您将看到更好的性能在几台机器上。
https://stackoverflow.com/questions/20813532
复制相似问题