我完全不是 Hadoop 专家,但我的理解是 Hadoop 非常适合并行算法,其中并行性表现为 map-reduce 形式或任何其他类型的分而治之。
还有其他类型的算法技术也很适合吗?
最佳答案
Hadoop 适用于令人尴尬的并行工作负载(并行任务之间没有依赖性)。进程之间没有消息传递机制。 Map 和 Reduce 进程遵循基于 IO 的通信模式,这本身就是一个很大的开销。
Map Reduce 不适合编写迭代算法(例如 KMeans、PageRank),因为每次迭代都是一个单独的 map reduce 应用程序,并且由于巨大的 IO 开销,算法的性能会下降。对于迭代算法,您可以使用消息传递接口(interface) (MPI)。它支持进程间基于套接字的通信,因此与 map reduce 相比,您可以显着提高性能。由于大量机器学习算法本质上是迭代的,因此不应使用 mapreduce 对其进行编程。
如果您的应用程序需要容错,Hadoop 是比 MPI 更好的选择。
关于algorithm - Hadoop 适合哪种类型的并行算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33061482/