首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >比较MapReduce性能

比较MapReduce性能
EN

Stack Overflow用户
提问于 2014-08-31 15:34:46
回答 1查看 481关注 0票数 2

我已经在一个节点上安装了,并且我遇到了十大问题。

假设我有一个10k对数据(键,值),并搜索具有最佳值的10个数据。

实际上,我创建了一个简单的项目来迭代整个数据,我只需要几分钟就能得到答案。

然后,我用十大设计模式创建mapreduce应用程序来解决同样的问题,我需要超过4个小时才能得到答案。(显然,我使用相同的机器和相同的算法进行排序)

我认为,这可能是因为mapreduce需要更多的服务来运行,需要更多的网络活动,需要更多的精力来读取和写入hdfs。还有其他因素可以证明mapreduce (在这种情况下)比不使用mapreduce慢吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-01 11:17:00

mapreduce在单个节点的设置上速度较慢,因为在任何给定的时间,只有一个映射器和一个还原器可以对其工作。mapper必须迭代每一个分块,而减速器同时工作于两个映射器输出,然后在两个这样的减速器上输出ans等等。

因此,就复杂性而言:

代码语言:javascript
运行
复制
for normal project :t(n) = n => O(n)
for mapreduce:t(n) = (n/x)*t(n/2x) => O((n/x)log(n/x)) where x is the number of nodes

你觉得哪个更大?对于单个节点和多个节点。

对mapreduce复杂性的解释:

一次迭代的时间:n

同时映射函数的数目:x,因为每个节点只有一个可以工作

映射完整数据所需的时间: n/x,因为n是映射器完成数据所需的时间。

对于减少作业,与以前的映射相比,需要一半时间,因为它同时工作在两个映射器输出上:时间= n/2x,用于x节点上的x减速器

因此,接下来的每一步都要比前一步花费一半的时间。

t(n) = (n/x)*t(n/2x)

通过求解这个递推,我们得到了O((n/x)log(n/x))。

这不应该是精确的,而是近似的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25593533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档