2011-11-26 45 views
3

具體來說,我試圖找到一種方法來使用map reduce來計算圖中的最短路徑。我提出的那個似乎需要多輪縮小地圖。但是,迄今爲止我在Hadoop上閱讀的所有文檔似乎都沒有清楚地描述具有多個stage.i.e的運行映射縮減作業。從第一階段取得減速器的輸出,並將其作爲輸入提供給下一階段的映射器。我希望在Hadoop中允許像他的人一樣。迭代映射減少作業。如何減少輸出量並將其輸送到下一個階段?

回答

2

我在這裏的博客上講述它:

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

這甚至是圖形算法相關的,你將最終獲得完全相同的代碼。

其基本思想是你有一個計數器,它將會是單個mapreduce步驟中有多少頂點已經更新的度量。然後你一次又一次地安排工作,直到你沒有更新的頂點。

但是,嚴重的是,MapReduce吸引圖算法,使用更好的框架,如Apache Hama

Apache Giraph對您也有幫助。

0

Steve的回答基本上是正確的。對於每一步,您都將inputformat的輸入目錄設置爲上一步的輸出目錄。根據需要重複此次迭代。但是,對於迭代圖問題,Map-Reduce是一個糟糕的抽象。看看Apache Giraph,這是一個特別爲這些類型的情況而設計的。你會發現你的問題更容易表達,問題的迭代性被照顧好。