我不是hadoop的Maven,但我的理解是hadoop非常适合并行算法,其中的并行性要么是一种map-reduce形式,要么是任何其他类型的分而治之。还有其他的算法技术也很适合吗?
wsxa1bj11#
hadoop适合于令人尴尬的并行工作负载(并行任务之间没有依赖关系)。进程之间没有消息传递机制。map和reduce进程遵循基于io的通信模式,这本身就是一个巨大的开销。map reduce不适合编程迭代算法(例如kmeans、pagerank),因为每个迭代都是一个单独的map reduce应用程序,并且由于巨大的io开销,算法的性能会下降。对于迭代算法,可以使用消息传递接口(mpi)。它支持进程之间基于套接字的通信,因此与map reduce相比,您可以在性能上获得显著的改进。由于大量的机器学习算法本质上是迭代的,因此不应使用mapreduce对其进行编程。如果应用程序需要容错,hadoop是比mpi更好的选择。
1条答案
按热度按时间wsxa1bj11#
hadoop适合于令人尴尬的并行工作负载(并行任务之间没有依赖关系)。进程之间没有消息传递机制。map和reduce进程遵循基于io的通信模式,这本身就是一个巨大的开销。
map reduce不适合编程迭代算法(例如kmeans、pagerank),因为每个迭代都是一个单独的map reduce应用程序,并且由于巨大的io开销,算法的性能会下降。对于迭代算法,可以使用消息传递接口(mpi)。它支持进程之间基于套接字的通信,因此与map reduce相比,您可以在性能上获得显著的改进。由于大量的机器学习算法本质上是迭代的,因此不应使用mapreduce对其进行编程。
如果应用程序需要容错,hadoop是比mpi更好的选择。