浏览 1591 次
锁定老帖子 主题:MapReduce应该做更少的事情
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-28
MapReduce 做的事情太多了。相比 unix 思想,它更多的是提供了一种策略(Policy),而非一种机制(Machanism)。 对于并行计算,如果我仅仅需要一种机制,暂且把这种机制叫做S,那么S只需要提供:
MapReduce当然提供了这个机制,只是,以它自己特定的方式(Policy)提供——就是排序。 Map 阶段是无依赖的计算,Reduce是有依赖的计算。Map的输入集合可以是任意顺序,任意切分,Combine可以看作只是为了提升效率而提前解决局部(local)依赖。 Reduce用来解决依赖,这个依赖,是按照Key的依赖,相同的Key和它的Value集合,是一个依赖集。 MapReduce 使用先排序,然后把整个Key-ValueList发送给应用接口,解决了这个问题。这样做,应用代码可以极大简化。但是,同时,这也严重地限制了性能。因为它做的事情,不是S的最小集。 一个S的最小集的实现:
如果 WordCount 使用这种方式,可以大幅提高速度,并减少内存用量。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |