【发布时间】:2012-09-18 05:49:43
【问题描述】:
- 每次 Kmeans 迭代后,Hadoop 是否会将输出(即一堆集群)存储到 HDFS 并在下一次迭代中将它们提取到内存中?
- 制图员将观察结果放在特定的集群中。我的意思是每个节点都必须知道所有的数据,而hadoop只分配计算而不是分配数据,这样每个节点都会给出某个节点的观察集,对吧?
谢谢
【问题讨论】:
标签: hadoop reduce k-means mapper
谢谢
【问题讨论】:
标签: hadoop reduce k-means mapper
对于这样的迭代处理 Hadoop/MR,因为一次又一次地运行相同的作业直到实现集群点的收敛,会产生开销。 Hadoop 比下面提到的其他框架慢 10 倍。
使用BSP 可以高效轻松地完成 K-Means 等迭代处理。 Apache Hama 和 Apache Giraph 都实现了 BSP。虽然 Apache Hama 公开了 BSP 原语,但 Apache Giraph 内部使用 BSP,主要用于图形处理,但不公开 BSP 原语。
Google 发布了一篇关于 Pregel 的论文,用于大规模迭代处理,他们使用 BSP 作为底层模型。
【讨论】:
【讨论】:
Hadoop 和 MR 并不是迭代算法(例如 KMeans)的真正好选择,尽管它仍然可行。我有机会在 Hadoop 上实现马尔可夫决策过程,这给我带来了巨大的痛苦,因为每次迭代都涉及输入和输出的磁盘 IO。除此之外,在 Hadoop 集群中启动一个迭代(一个 MR 作业)需要花费数十秒的时间。
后来我试用了 Spark,这是一个类似 MR 的框架,可以在 Hadoop 上完美运行。它使用集群中所有商用计算机的内存来缓存迭代不变量,而不是反复读取和写回磁盘。你可能想看看:-)
【讨论】: