在MapReduce范例中可以重铸哪些类型/类别的算法?

时间:2012-05-24 00:03:59

标签: algorithm parallel-processing hadoop mapreduce

一些“快速问题”:

  • 在MapReduce范例中可以重铸哪些类型/类别的算法? (例如,k-means有MR实施)

  • 是否有任何不能用这种方式表达的内容?

  • 什么算法特征使得它们在MR范例中重铸不那么有吸引力/复杂

提前感谢您的帮助。

最大

2 个答案:

答案 0 :(得分:2)

Map Reduce范例最适合于“令人尴尬的并行”的问题,即任何两个任务之间没有依赖关系。请查看维基百科上的Embarrassingly Parallel文章。

此外,如果操作是可交换的或关联的,MapReduce程序可以轻松优化以获得更好的性能。

答案 1 :(得分:2)

我正在研究这些来自MPI世界的大数据算法集合的相同问题。这是我的看法。

MR制剂的基本管道似乎是扩张/收缩。映射应用于大型集合,可能创建更大的集合,然后使用reduce来对该集合进行排序/组织,以便可以将其聚合到合并数据集中,最好小得多。地图的数量和减少你需要的是MR算法的聪明。

作为一种通用计算方法,您可以使用MR解决任何计算问题,但从实际角度来看,MR的资源利用率偏向于支持具有高并发I / O要求的计算问题。令人尴尬的并行算法(如字数统计)肯定符合这个要求,但它比这更广泛,例如,你的k-means算法是一个约束最小化问题,没有人会将其归类为令人尴尬的平行,但仍然有一个有效的MR公式。 / p>

我目前的正式框架根据五个属性来表征分布式计算机系统:

  1. 处理器性能
  2. 内存容量(我们可以忽略内存性能,因为它往往由处理器设计人员构建以支持处理器的性能)
  3. 磁盘存储容量
  4. 网络带宽性能
  5. 网络消息延迟
  6. 磁盘性能是我仍在努力干净整合,因为旋转与SSD存储技术具有巨大的性能影响,但前提是SSD通过PCIe集成。如果通过SAS或SATA集成,那么您可以达到接口限制,旋转也可以轻松地使该接口饱和。在这种情况下,只有SSD的优秀延迟才能有助于提高性能,但这只会使数据记录较小的数据集受益。所以目前,让我们假设我们有一个真正的大数据问题,需要旋转存储来有效地控制数据。

    MapReduce在扩展/收缩流程中使用上面的分布式资源列表:它使用处理器+内存+磁盘来执行映射功能,然后在降低功能的情况下严重依赖网络性能。由于添加服务器将扩展处理器+内存+磁盘资源,遗憾的是,网络性能仅适度增加,但延迟性能下降。由于网络延迟是在分布式系统中最小化的非常困难的性能特性,因此MR算法对于以带宽为中心的运营商最有效:即,具有数十亿个独立的小数据包的算法。 Nishant强调的交换和关联属性是识别这类算法的完美总结,因为这些数据包中的排序要求大大简化,因此简单的排队运算符就足够了。

    我正在寻找关于是否存在用于PDE求解器和优化算法的有效MR算法的见解,例如整数编程。从正在做FutureGrid的人那里找到一个很棒的图形: Domains of Algorithmic Organization