2011-02-18 80 views
0

我有兩個用於Hadoop流式傳輸的程序。Hadoop Streaming with large size of stdout

mapper (produces <k, v> pair) 
    reducer 

當然,<k, v>對發射到stdout

我的問題是

如果v<k, v>是非常大的,它在Hadoop有效地運行?

我猜v由mapper發出的將是1G或更多(有時超過4G)。

回答

1

我認爲這樣大小的Value會導致一個問題,因爲在內存中操作它們是有問題的。如果你確實需要這麼大的值,你可以把它們放到HDFS中,並使V成爲文件的名字。在這種情況下,您應該考慮的問題是,這種方法不再有用 - 例如來自失敗的映射器的副作用。

0

你是什麼意思「當然,對發射到標準輸出」?

你的意思是說關鍵值對的數量非常大嗎?如果是的話,那麼hadoop就能有效地處理這個問題

如果你的意思是說v的大小非常大。所以,對於一個給定的密鑰,發射的值是1到4 GB甚至更多。首先你運行什麼樣的應用程序來生成這麼大的值。是否有可能分手鑰匙?

回到要點:Hadoop效率不高。取決於用例。 在大多數情況下,這會非常低效。