kmeans

xghobddn  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(350)

在每次kmeans迭代之后,hadoop是否会将一堆集群的输出存储到HDF中,并在下一次迭代中将它们提取到内存中?
制图员正在把观测结果分为若干组。我的意思是每个节点都必须知道所有的数据,hadoop只分发计算而不是数据,这样每个节点都会给出某个节点的观察集,对吗?
谢谢您

wnavrhmk

wnavrhmk1#

hadoop和mr并不是迭代算法的好选择,比如kmeans,尽管它仍然是可行的。我有机会在hadoop上实现markov决策过程,这给我带来了巨大的痛苦,因为每次迭代都涉及到磁盘io,无论是输入还是输出。除此之外,在hadoop集群中启动一个迭代(mr作业)需要数十秒。
后来我试用了spark,它是一个类似mr的框架,可以在hadoop上完美地工作。它使用集群中所有商品计算机的内存来缓存迭代不变量,而不是重复地读写它们到磁盘上。您可能想查看:-)

h9vpoimq

h9vpoimq2#

对于hadoop/mr这样的迭代处理,由于一次又一次地运行同一个作业,直到实现簇点的收敛,因此存在开销。与下面提到的其他框架相比,hadoop要慢10倍。
像k-means这样的迭代处理可以使用bsp高效而容易地完成。apachehama和apachegiraph都实现了bsp。apachehama公开bsp原语,apachegiraph在内部使用bsp,主要用于图形处理,但不公开bsp原语。
google发布了一篇关于pregel大规模迭代处理的论文,他们使用bsp作为底层模型。

nnt7mjpx

nnt7mjpx3#

是的,如果我们有数据要从一个mr作业传递到另一个mr作业,hdfs(确切地说是dfs)是唯一的选择。这并不是问题,因为我们这里有集群的聚合带宽
k-均值聚类不需要将所有数据发送到所有节点,它有非常高效的并行实现。http://blog.data-miners.com/2008/02/mapreduce-and-k-means-clustering.html 简言之,其思想是将从本地可用的组if行到所有中心的距离聚合起来,然后将这些少量信息发送给集中处理。

相关问题