我有兩個用於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)。
我有兩個用於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)。
我認爲這樣大小的Value會導致一個問題,因爲在內存中操作它們是有問題的。如果你確實需要這麼大的值,你可以把它們放到HDFS中,並使V成爲文件的名字。在這種情況下,您應該考慮的問題是,這種方法不再有用 - 例如來自失敗的映射器的副作用。
你是什麼意思「當然,對發射到標準輸出」?
你的意思是說關鍵值對的數量非常大嗎?如果是的話,那麼hadoop就能有效地處理這個問題
如果你的意思是說v的大小非常大。所以,對於一個給定的密鑰,發射的值是1到4 GB甚至更多。首先你運行什麼樣的應用程序來生成這麼大的值。是否有可能分手鑰匙?
回到要點:Hadoop效率不高。取決於用例。 在大多數情況下,這會非常低效。