我正在从事一个处理大量数据的项目,因此我是最近才发现MapReduce的,在进一步研究之前,我想确保自己的期望是正确的。

与数据的交互将通过Web界面进行,因此响应时间在这里至关重要,我认为这是10-15秒的限制。假设我将对数据进行任何分析之前将其数据加载到分布式文件系统中,我可以从中获得什么样的性能?

假设我需要过滤一个格式简单的5GB XML文件,该文件具有相当平坦的数据结构,其中包含10,000,000条记录。假设输出将导致100,000条记录。可以10秒吗?

如果可以,我在看哪种硬件?
如果没有,为什么不呢?

我记下了这个例子,但现在希望我没有。 5GB只是我正在谈论的一个示例,实际上,我将处理大量数据。 5GB可能是一天中一个小时的数据,我可能想确定所有符合特定条件的记录。

数据库对我来说真的不是一个选择。我想发现的是使用MapReduce可以达到的最快性能。是总是几分钟还是几小时?是永远不会秒吗?

最佳答案

MapReduce非常适合扩展大型数据集的处理,但并非旨在响应。例如,在Hadoop实现中,启动的开销通常仅需花费几分钟。这里的想法是处理一个需要几天的工作,并将其减少到几个小时或几小时到几分钟,等等。但是您不会响应网络请求而开始新的工作,并且期望它能在以下时间完成:作业时间:大约一小时。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。留利亚的情况了。该做出回应了。

为了说明为什么会发生这种情况,请考虑MapReduce的工作方式(一般的高级概述):

  • 一堆节点接收
    输入数据(称为拆分)并执行
    一些处理( map 步骤)
  • 中间数据(从
    最后一步)被重新划分为
    带有相同键的数据最终结束了
    一起。这通常需要一些
    节点之间的数据传输。
  • reduce节点(不是
    必然与映射器不同
    节点-一台机器可以做
    连续执行多个工作)执行
    减少步骤。
  • 结果数据已收集并合并
    产生最终的输出集。

  • 尽管Hadoop等人试图将数据的本地性保持在尽可能高的水平,但是在处理过程中仍然有相当多的改组。仅此一项就可以防止您使用分布式MapReduce实现来支持响应式Web界面。

    编辑:正如Jan Jongboom所指出的那样,MapReduce非常适合预处理数据,因此可以快速进行Web查询,因为它们不需要进行处理。考虑从大量网页创建反向索引的著名示例。

    关于mapreduce - MapReduce适合我吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2059728/

    10-16 03:01