对于在Mappers之间共享信息的增强版MapReduce,什么是一个很好的应用程序?

时间:2012-01-12 23:59:58

标签: scala hadoop machine-learning mapreduce computer-vision

我正在构建Spark框架的增强功能(http://www.spark-project.org/)。 Spark是加州大学伯克利分校的一个项目,可以在RAM中快速完成MapReduce。 Spark是用Scala构建的。

我正在构建的增强功能允许在映射器计算时共享一些数据。这可能很有用,例如,如果每个映射器都在寻找最佳解决方案,并且他们都希望共享当前最佳解决方案(尽早删除不良解决方案)。解决方案在传播时可能会略微过时,但这仍然可以加快解决方案的速度。通常,这称为分支定界方法。

我们可以分享单调增加的数字,但我们也可以共享数组和字典。

我们还在研究机器学习应用程序,其中映射器描述了本地自然梯度信息,然后在所有节点之间共享新的最佳当前最优解决方案。

这种增强的其他一些好的实际应用是什么?只需在映射器之间进行一点点信息共享,Map Reduce计算可以从中获益哪些真实有用的应用程序。什么应用程序现在使用MapReduce或Hadoop,但由于Map阶段的独立性限制,它们只是有点太慢了?

好处可以是加快地图阶段,也可以改善解决方案。

1 个答案:

答案 0 :(得分:4)

  

我正在构建的增强功能允许在映射器计算时共享一些数据。

Apache Giraph基于Google Pregel,基于BSP,用于图表处理。在BSP中,通信阶段的进程之间存在数据共享。

Giraph依靠Hadoop实现。一般情况下,MapReduce中的映射器之间没有通信,但在Giraph中,映射器在BSP的通信阶段相互通信。

您可能也对实现BSP的Apache Hama感兴趣,并且可以用于图形处理以外的其他工作。

可能有一些原因使得映射器不能在MR中进行通信。您是否在增强功能中考虑了这些因素?

  

这种增强的其他一些好的实际应用是什么?

图形处理是我能想到的一件事,类似于Giraph。查看BSP的不同用例,有些可能适用于此类增强。我也非常感兴趣其他人对此有何看法。