关于地图/减少概念的一些问题



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

  1. 即使有10个worker/threads/machines/cpus/whatever,map函数在处理巨大的数据集时不会仍然很慢吗?例如,如果数据集是十亿条记录,这意味着每个工作者仍然需要迭代超过一亿条记录,并且转换仍然需要存储在某个地方进行处理。

  2. 如何将数据上的索引纳入映射/减少场景(如果有的话)?

作为一个额外的问题,我想做的是在一个数据集上生成一个实时(<100ms响应时间)搜索解决方案,该数据集有2000万至5000万条记录,其中结果可以在1-3个字段上排序,并通过嵌套的分组"与/或"查询在大约20-30个不同的字段上查询。映射/减少可能是我正在做的事情的最佳方法吗?

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

map函数的输出需要存储在某个地方,以便reduce操作,这是不可避免的。

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

你面前有一项艰巨的任务,我想看看其他人是如何实现这样的系统的,看看我是否不能重用其中一个,而不是自己去做。如果这是一次智力锻炼,那么我希望你能在某个地方的博客文章中分享这些考验、磨难和结果。

相关内容

  • 没有找到相关文章