关于map / reduce概念的一些问题

时间:2012-02-21 11:12:58

标签: mapreduce

我一直在阅读有关map / reduce的内容,以便我可以提高对大数据处理技术的理解,但我对以下几点有点不清楚:

  1. 在操作大型数据集时,map函数是否仍然会变慢,即使是10个worker / threads / machines / cpus / what?例如,如果数据集是十亿条记录,那意味着每个工作人员仍然需要迭代超过1亿条记录,并且仍需要将转换存储在某处进行处理。

  2. 如何将数据上的索引纳入map / reduce场景(如果有的话)?

  3. 作为一个额外的问题,我要做的是在20-50范围内的数据集上生成实时(< 100ms响应时间)搜索解决方案百万条记录,可以在1-3个字段中对结果进行排序,并在具有嵌套,分组AND / OR查询的大约20-30个不同字段中查询。 map / reduce可能是我正在做的最好的方法吗?

1 个答案:

答案 0 :(得分:1)

map函数将提取reduce函数将要执行的数据子集(以最终输出格式)。由于map是提取,因此可以合理地预期索引将成为执行速度的主要因素。每当您查看数十亿条记录时,都需要进行适当的优化和适当的平台,以便及时保持记录。

地图功能的输出需要存储在准备好减少操作的地方,这是不可避免的。

Map / Reduce为您提供了将搜索细分为更小,更易于管理的块的机会,因此它适合您的任务。请记住,除非您使用多个系统,否则简单地向任务添加线程可能会适得其反,因为它会增加为所有系统提供服务所需的上下文切换。我不会为每个系统分配比物理内核数更多的线程,也可以在线程争用磁盘访问或NIC访问时为延迟做好准备。

你面前的任务很艰巨,我会看看其他人是如何实现这样的系统的,看看我是不是可以重用其中一个而不是试图自己做。如果这是一项智力练习,那么我希望你能在某个博客文章中分享试验,磨难和结果。