1

我正在運行一個使用Qizmt進行簡單MapReduce操作的本地單系統測試。在「地圖」階段的結束,我呼籲:MapReduce跳過密鑰?

output.Add(rKey, rValue); 

這就是所謂的我們說一百萬次,而鍵1,2,3,4,5,6等 - 每一個獨特的(我畢竟,我只是在測試)。我已經檢查過,這是按照預期發生的。它是。該函數被稱爲百萬個獨立時間,並且輸入值是正確的。讓我吃驚的是,僅在'減少'階段,比如說,實際上接收了一百個左右的密鑰(也就是說,'減少'函數只被調用了一百次左右)。這些鍵似乎從映射的列表中幾乎任意選取,例如以下模式:0,383,766,2858,3241,5716等。

使它通過'減少'的鍵的集合是是一致的。即。每次執行任務時,我都會得到0,383,766等。但是,如果我將第二個系統添加到集羣,那麼完成更改的密鑰集就會被更改!

'Map'和'Reduce'之間的階段對我來說有點神祕 - 我真的不確定去哪裏看,因爲我的Map函數看起來完全按照預期運行(即調用'產量「百萬次)。有更多並行處理經驗的人有任何想法,我應該看什麼,或任何可能導致此行爲?

+0

根據[MapReduce維基百科文章](http://en.wikipedia.org/wiki/MapReduce),Map和Reduce之間的階段是分區和比較。也許分區函數認爲它有多個Reducer? – 2010-08-20 12:08:52

+0

很可能,儘管Qizmt似乎將存在的分區函數抽象出來 - 不知道我會如何分析它。 – Rushyo 2010-08-20 12:19:38

回答

0

沒有解決。最終用另一種語言編寫項目,並沒有遇到同樣的問題。無論如何,Qizmt似乎並沒有得到更新。