hadoop mapreduce-具有少量键和每个键的多个值的reducer

nwsw7zdq  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(336)

hadoop天生就是用来处理大数据的。但是,如果Map器的输出也很大,太大,无法容纳reducer内存,会发生什么呢?
假设我们正在考虑一些需要集群的大量数据。我们使用一些划分算法,可以找到指定数量的元素(簇)的“组”,使得一个簇中的元素是相似的,但是属于不同簇的元素是不同的。通常需要指定集群的数量。
如果我尝试将k-means作为最著名的聚类算法来实现,那么一次迭代将如下所示:
Map阶段-将对象指定给最近的质心
减少相位-基于簇中的所有对象计算新质心
但是如果我们只有两个星团呢?
在这种情况下,大型数据集将分为两部分,只有两个键,每个键的值将包含大型数据集的一半。
我不明白的是-如果减速机为一个键获取多个值怎么办?他怎么能把它装进公羊里??这难道不是hadoop诞生的原因之一吗?
我只举了一个算法的例子,但这是一个一般性的问题。

cedebl8k

cedebl8k1#

正因为如此,在reducer中,您永远不会得到特定键的值列表。您只能得到值的迭代器。如果某个键的值太多,它们不会存储在内存中,而是从本地磁盘读取。
连杆:减速器
另外,请参阅二次排序,这是一个非常有用的设计模式,当您有太多的值的情况下。

相关问题