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