1
  1. 在 Kmeans 的每次迭代之后,Hadoop 是否会将作为一堆集群的输出存储到 HDFS 并在下一次迭代中将它们提取到内存中?
  2. 制图员将观察结果放在某些集群中。我的意思是每个节点都必须知道所有的数据,而hadoop只分配计算而不是数据,这样每个节点都会给出某个节点的观察集,对吧?

谢谢

4

3 回答 3

1

对于这样的迭代处理 Hadoop/MR,由于一次又一次地运行相同的作业直到实现集群点的收敛,因此存在开销。Hadoop 比下面提到的其他框架慢 10 倍。

使用BSP可以有效且轻松地完成像 K-Means 这样的迭代处理。Apache HamaApache Giraph都实现了 BSP。虽然 Apache Hama 公开了 BSP 原语,但 Apache Giraph 内部使用 BSP,主要用于图形处理,但不公开 BSP 原语。

Google 发布了一篇关于Pregel进行大规模迭代处理的论文,他们使用 BSP 作为底层模型。

于 2012-10-03T11:38:54.417 回答
0
  1. 是的,如果我们要将数据从一个 MR 作业传递到另一个 - HDFS(或者准确地说是 DFS)是唯一的选择。这不是问题,因为我们在这里聚合了集群的带宽
  2. K-Mean 聚类不需要将所有数据发送到所有节点 - 它具有此处描述的非常有效的并行实现。http://blog.data-miners.com/2008/02/mapreduce-and-k-means-clustering.html 简而言之,如果行到所有中心,则聚合从本地可用组的距离,然后发送少量用于集中处理的信息。
于 2012-09-26T16:48:05.590 回答
0

Hadoop 和 MR 并不是迭代算法(例如 KMeans)的真正好选择,尽管它仍然可行。我有机会在 Hadoop 上实现马尔可夫决策过程,这给我带来了巨大的痛苦,因为每次迭代都涉及输入和输出的磁盘 IO。除此之外,在 Hadoop 集群中启动一个迭代(一个 MR 作业)需要花费数十秒的时间。

后来我试用了 Spark,这是一个类似 MR 的框架,可以在 Hadoop 上完美运行。它使用集群中所有商用计算机的内存来缓存迭代不变量,而不是反复读取和写回磁盘。您可能想检查一下:-)

于 2013-08-14T03:45:13.297 回答