【发布时间】:2010-04-18 13:02:54
【问题描述】:
说使用迭代 MapReduce 进行并行计算主要是在训练数据量太大而无法进行相同逻辑的非并行计算时是否正确?
我知道启动 MapReduce 作业存在开销。 当需要大量迭代时,这对于整体执行时间至关重要。
我可以想象,只要内存允许在许多情况下保存数据集,顺序计算就会比使用迭代 MapReduce 的并行计算更快。
【问题讨论】:
标签: hadoop mapreduce iteration
说使用迭代 MapReduce 进行并行计算主要是在训练数据量太大而无法进行相同逻辑的非并行计算时是否正确?
我知道启动 MapReduce 作业存在开销。 当需要大量迭代时,这对于整体执行时间至关重要。
我可以想象,只要内存允许在许多情况下保存数据集,顺序计算就会比使用迭代 MapReduce 的并行计算更快。
【问题讨论】:
标签: hadoop mapreduce iteration
如果大多数时候只有一台机器完成这项工作,那么并行处理系统就没有多大意义。与大多数并行化任务相关的复杂性非常高,需要有充分的理由来使用它。
即使很明显如果没有并行处理就无法在可接受的时间内解决任务,并行执行框架也有不同的风格:从更底层、面向科学的工具(如 PVM or MPI)到高级工具,专门的(例如 map/reduce)框架,例如 Hadoop。
您应该考虑的参数包括开始时间和可扩展性(系统扩展与线性的接近程度)。如果您需要快速获得答案,Hadoop 将不是一个好的选择,但如果您可以将您的流程放入 map-reduce 框架中,它可能是一个不错的选择。
【讨论】:
您可以参考项目 HaLoop (http://code.google.com/p/haloop),它正好解决了这个问题。
【讨论】: