【问题标题】:Map Reduce OR other distributed/parallel design pattern?Map Reduce 或其他分布式/并行设计模式?
【发布时间】:2013-07-13 01:16:56
【问题描述】:

我有这段代码可以连接/组合一组图像。我想将此顺序代码重组为并行/分布式应用程序,因为我的图像集合非常大(大数据:-))。我正在考虑使用 Map/Reduce,但不确定这在 Map/Reduce 下是否可行。

#Sequential Code 
Result.Image <- NULL
foreach(Image in Image.Collection) {
  Result.Image <- CombineImage(Result.Image, Image)
}

注意:顺序无关紧要;组合图像 1,2,3,4,5 与组合图像 2,3,1,4,5 一样好。

理想情况下,我想要这样的东西(看起来更像是经典的divide-et-impera,而不是像map/reduce):

1,2,3,4 是原始图像。一个节点将图像#1 和图像#2 连接成一个称为图像#5 的新图像。第二个节点将图像#3 和图像#4 连接成图像#6,最后一个节点将图像#5 和图像#6 连接成最终结果。

关于我应该使用什么框架/并行或分布式设计模式来做这样的事情有什么想法吗?

干杯!!

【问题讨论】:

    标签: parallel-processing mapreduce distributed-computing divide-and-conquer fork-join


    【解决方案1】:

    从您的初始描述(foreach 代码)看来,您在处理 #1 和 #2 之前无法处理图像 #3,因为您在 Result.Image 中累积了中间结果。现在,您的图表显示了一个不同的故事,兄弟节点可以并行处理,我想知道是否甚至可以并行组合随机节点。无论如何,我认为您可以将所有初始图像放在一个 FIFO 队列中,并在您可以负担的情况下将其投入到尽可能多的处理器(线程或机器或节点)中。每个处理器拾取两张图像,将它们组合起来,然后将结果放回队列中。您像这样处理,直到您在队列中获得 1 张图像。

    【讨论】:

    • 嗨 Gabriel - 是的,甚至随机节点也可以并行组合 - 组合 1,2,3,4,5 与组合 3,2,4,5,1 一样好......在我看来,您描述的 FIFO 队列解决方案非常好 :-)
    猜你喜欢
    • 2014-08-05
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多