2011-10-06 43 views
2

我想編寫一個Java包裝器,它將'兼容程序'轉換爲由Hadoop框架執行的map reduce form。 我知道我的問題很含糊,但這就是我的意圖。將一個普通的java程序轉換爲map減少

  • 取一個輸入java程序。用戶將指定 程序的哪一部分將由map reduce執行。
  • 這個java程序將由我的程序輸入 ,它會提供等效的map減少 程序到hadoop。

我被困在幾點。

  • 針對每個類的地圖縮減程序將有所不同。我怎麼去推廣 呢?
  • 從哪裏開始。
  • 我應該怎樣解決這個問題?

歡迎任何建議。這將幫助我確定進一步的方向。

回答

1

一般情況下,不是所有的程序都支持MapReduce範例。 MapReduce是一個框架,一些任務可以完成,有些則不是。最好的問題你可以問你自己確定是否可以利用地圖減少使用量。

  1. 是否有部分可以並行評估。
  2. 它們是否需要通過一些密鑰進行彙總
  3. 需要在每個分割之間共享多少數據。
  4. 燦問題步驟1的順序/循環來解決,以3
+0

我同意你yura。現在似乎不可能將任何程序轉換爲等效的地圖縮小形式。所以我覺得我應該採取一些具體的問題。我現在計劃的是比較許多地圖縮減程序和它們的普通Java程序,以查看是否有任何提示。 – Pars

+0

@ user981630是的,閱讀關於mpa減少算法的書,你會理解它的工作原理。 http://www.amazon.com/Data-Intensive-Processing-MapReduce-Synthesis-Technologies/dp/1608453421%3FSubscriptionId%3DAKIAIIBINOD46VC3JCLQ%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1608453421 – yura

1

看看Hadoop Streaming。您可以使用任何可以讀/寫STDOUT/STDIN的語言編寫map/reduce函數,然後將它們掛接到Apache Hadoop。 Here是一個很好的教程,介紹如何使用兼容的Python map/reduce函數創建MapReduce作業。

+0

Thnx praveen,但這裏必須寫出地圖並減少我想避免的功能。我想採用普通的Java程序(我現在已經將我的語言修正爲java),並嘗試使用map reduce並行運行它。我還需要確定哪些地區 - 如果有的話 - 可以平行進行。 – Pars

+0

Hadoop f/w希望您的程序能夠使用鍵/值對。我不認爲你可以隨意地採取一些Java或任何語言代碼,並將其適用於Hadoop。 –