迭代地图减少了工作。如何减速机输出并将其输送到下一阶段?

时间:2011-11-26 21:37:54

标签: hadoop mapreduce

具体来说,我试图找到一种方法来使用map reduce计算图中的最短路径。我提出的那个似乎需要多轮地图缩减。但是,到目前为止我在Hadoop上阅读的所有文档似乎都没有清楚地描述具有多个阶段的运行map reduce作业。从第一阶段获取reducer的输出并将其作为输入提供给下一阶段的mapper。我希望在Hadoop中允许他的作品。

3 个答案:

答案 0 :(得分:2)

我在这里写了博客:

http://codingwiththomas.blogspot.com/2011/04/controlling-hadoop-job-recursion.html

这甚至与图形算法相关,你最终会得到完全相同的代码。

基本思想是你有一个计数器,它可以衡量在一个mapreduce步骤中更新了多少个顶点。然后,您一次又一次地安排作业,直到您没有更新的顶点。

但严重的是,MapReduce糟糕的图形算法,使用更好的框架,如Apache Hama

Apache Giraph对您也有帮助。

答案 1 :(得分:0)

史蒂夫的答案基本上是正确的。对于每个步骤,您将inputformat的输入目录设置为上一步的输出目录。根据需要重复此操作以进行多次迭代。但是,Map-Reduce对于迭代图问题来说是一个糟糕的抽象。看看Apache Giraph,这是专为这些类型的情况而设计的。您会发现您的问题更容易表达,并且问题的迭代性质将由您负责。

答案 2 :(得分:0)