我用Java编写了一段简单的代码来读取csv文件,对行进行细微的修改(使用散列),然后写入输出文件。
我想比较一下顺序版本(纯java)和MapReduce版本的代码。(代码没有太大区别)。
我在伪分布式hadoop (单节点)和全分布式hadoop (3个节点)中都尝试过代码,但令我惊讶的是,MapReduce版本的执行时间总是高于顺序版本(近似两到三倍)。
我在Hadoop方面没有太多经验,但至少分布式处理应该比串行处理花费更少的时间(因为这就是为什么我们有分布式处理)。我甚至尝试了不同的数据集大小。
发布于 2019-04-08 17:05:12
与顺序算法相比,每个并行算法都有额外的开销-这种开销可以是在单个机器上创建和维护线程,但主要是通信开销-分发初始数据、进程间通信( IPC )、收集部分结果和/或合并它们。
算法的效率取决于各种因素-显然是输入大小,但也包括用于计算的节点数量-请参见isoefficiency。使用更多的机器并不总是意味着更快的处理时间。通过使用等效率方程,您可以计算对于固定的问题大小应该使用多少个节点来最大化效率。
你的问题没有提供详细的信息,比如你使用了什么算法,你提供了什么实例,但我希望对于非常大的实例,你的分布式系统应该比它的顺序对应系统更快。
https://stackoverflow.com/questions/55569618
复制相似问题