2013-12-19 40 views
1

我有一個約10000行的矩陣。我寫了一個代碼,在每次迭代中應該佔用一行,執行一些長矩陣計算,並且每行矩陣返回一個雙精度值。由於每行的操作次數太多,運行代碼需要很長時間。我正在考慮使用MapReduce來實現它,但我不確定它是否可行。主要思想是將矩陣行分成不同的節點,獨立運行作業並將輸出組合在一起並返回一個數字列表。根據我的理解,只需一名製圖員就可以完成這項工作。我對嗎?可能嗎?或者有更好的想法?提前致謝。順便說一句,代碼是在Java中。矩陣計算使用hadoop mapreduce

回答

1

這似乎可能 - 幾點考慮:

您可能需要運行標識映射器(其中一個通過每個輸入記錄到減速機),做該行的計算在減速。進行計算map-side可能仍然會導致所有計算都在單個節點上完成(10000行矩陣比輸入分割大小更可行)。

您需要運行大量減速器以確保作業在您的羣集節點中並行化。默認分區將處理髮送輸入行到不同的reducer(假設你的行不是固定寬度,在這種情況下,你應該運行一個自定義映射器,它使用一個計數器作爲輸出鍵,而不是輸入行的默認字節偏移量) 。

爲了將所有結果重新結合在一起,您需要運行第二個帶有單個減速器的MR作業

+0

太棒了!非常感謝。你提到了非常好的一點!當我得到結果時,我會回到你身邊。 – MTT