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