我刚接触并行计算,刚刚开始在amazonaws上尝试mpi和hadoop+mapreduce。但我不知道什么时候该用一个而不是另一个。
例如,我看到的一个常见的经验法则建议可以概括为。。。
大数据、非迭代、容错=>mapreduce
速度,小数据,迭代,非Map减速器类型=>mpi
但是,我也看到了mapreduce在mpi上的实现(mr-mpi),它不提供容错,但在某些基准测试上似乎比hadoop上的mapreduce更有效,而且似乎可以使用核心内存外处理大数据。
相反,在新一代hadoopyarn及其分布式文件系统(hdfs)上也有mpi实现(mpich2yarn)。
此外,在mpi(分散-聚集、检查点重新启动、ulfm和其他容错)中似乎有一些规定模仿了mapreduce范例的一些特性。
那么mahout、mesos和spark是如何融入这一切的呢?
在决定hadoopmapreduce、mpi、mesos、spark和mahout之间(或两者的组合)时可以使用什么标准?
2条答案
按热度按时间3okqufwl1#
您发布的关于在mapreduce上执行fem的链接:http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=6188175&url=http%3a%2f%2fieeexplore.ieee.org%2fxpls%2fabs_all.jsp%3farnumber%3d6188175
使用mpi。它就在那里抽象地说。他们将mpi的编程模型(非尴尬的并行)与hdfs相结合,来“暂存”数据以利用数据局部性。
hadoop纯粹是用于令人尴尬的并行计算。任何需要进程以复杂的方式组织自己和交换数据的事情都会在hadoop中获得糟糕的性能。这既可以从算法复杂性的Angular 来证明,也可以从度量的Angular 来证明。
g52tjvyc2#
这个决定可能有很好的技术标准,但我还没有看到任何关于它的文章发表。似乎存在一种文化差异,人们理解mapreduce用于筛选公司环境中的数据,而科学工作负载则使用mpi。这可能是由于这些工作负载对网络性能的潜在敏感性。以下是一些关于如何找到答案的想法:
许多现代mpi实现可以在多个网络上运行,但是针对infiniband进行了大量优化。mapreduce的规范用例似乎位于通过以太网连接的“白盒”商品系统集群中。快速搜索“mapreduce infiniband”可以找到http://dl.acm.org/citation.cfm?id=2511027 这表明在mapreduce环境中使用infiniband是一件相对较新的事情。
那么,为什么要在针对infiniband进行了高度优化的系统上运行呢?它比以太网要昂贵得多,但具有更高的带宽、更低的延迟,并且在高网络争用情况下可扩展性更好(参考:http://www.hpcadvisorycouncil.com/pdf/ib_and_10gige_in_hpc.pdf).
如果您的应用程序对infiniband优化的影响非常敏感,而infiniband优化已经被烘焙到许多mpi库中,那么这可能对您很有用。如果您的应用程序对网络性能相对不敏感,并且将更多时间花在不需要进程间通信的计算上,那么mapreduce可能是更好的选择。
如果您有机会运行基准测试,您可以在任何可用的系统上进行投影,以查看网络性能的改进会有多大帮助。尝试调节你的网络:例如,将gige降到100mbit或将infiniband qdr降到ddr,在结果中画一条线,看看购买一个由mpi优化的更快的互连是否能让你达到你想要的目的。