我運行了一系列的EMR MapReduce
工作。然而,第三MapReduce
作業需要從第二MapReduce
作業輸出的數據,並輸出基本上是超過一百萬的鍵值對(包括鍵和值小於1KB較少)。有沒有一種很好的方式將這些信息存儲在與EMR相同的機器上的分佈式存儲中,以便隨後的作業可以訪問這些信息?我看着DistributedCache
,但它更多的是存儲文件?我不確定Hadoop是否針對存儲一百萬個小文件進行了優化。的Hadoop/EMR如何存儲鍵值對
或者我可以用某種方法使用另一個MapReduce
作業將所有鍵值對合併到一個輸出文件中,然後將整個文件放入DistributedCache
。
請指教。謝謝!
感謝您的回答,我們最後使用'DistributedCache',但在'設置(上下文)構建''HashMap'下一'MapReduce'的方法,使每個節點只有構建地圖一次:] – Jin 2013-05-06 01:59:53
@JIN不用客氣。您也可能想嘗試將JVM用於多個映射器,以便爲N個映射器只讀取一次散列映射。見http://stackoverflow.com/questions/4877691/is-it-possible-to-run-several-map-task-in-one-jvm – harpun 2013-05-06 17:07:40