【问题标题】:Why Hadoop Mapreduce distributed processing takes longer than normal sequential processing?为什么 Hadoop Mapreduce 分布式处理比正常的顺序处理需要更长的时间?
【发布时间】:2019-04-08 08:56:01
【问题描述】:

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

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

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

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

【问题讨论】:

  • 对可能非常大的 csv 文件尝试相同的设置,以利用 hadoop 在分发时所做的开销

标签: java hadoop mapreduce hadoop2


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 2020-12-22
    相关资源
    最近更新 更多