为什么Hadoop Mapreduce分布式处理比正常的顺序处理需要更长的时间?

问题描述 投票:0回答:1

我在Java中编写了一个简单的代码来读取csv文件,在行中稍作修改(使用哈希),然后写入输出文件。

我想比较顺序版本(普通java)和MapReduce版本的代码。 (代码没有太大区别)。

我尝试了伪分布式hadoop(单节点)和完全分布式hadoop(3个节点)的代码,但令我惊讶的是,MapReduce版本的执行时间总是高于顺序(大约两次或三次)。

我在Hadoop方面没有太多经验,但至少分布式处理应该比串行处理花费更少的时间(因为这就是我们进行分布式处理的原因)。我甚至尝试过不同的数据集大小。

java hadoop mapreduce hadoop2
1个回答
2
投票

与其顺序算法相比,每个并行算法都有额外的开销 - 这个开销可以是单个机器上的线程创建和维护,但主要是它的通信开销 - 分发初始数据,IPC(进程间通信),收集部分结果和/或结合它。

算法的效率取决于各种因素 - 显然是输入大小,还有用于计算的节点数 - 请参阅isoefficiency。使用更多机器并不总是意味着更快的处理时间。通过使用等效率方程,您可以计算应该使用多少节点来解决固定问题大小以最大化效率。

您的问题没有提供详细信息,例如您使用了哪种算法以及您提供了哪些实例,但我希望对于非常大的实例,您的分布式系统应该比其顺序对应更快。

© www.soinside.com 2019 - 2024. All rights reserved.