我正在閱讀最初的MapReduce論文。我的理解是,處理數百GB的數據時,傳輸太多數據的網絡帶寬可能成爲MapReduce作業的瓶頸。對於地圖任務,我們可以通過在已經包含任何給定拆分數據的工作人員上安排地圖任務來減少網絡帶寬,因爲從本地磁盤讀取數據不需要網絡帶寬。MapReduce洗牌階段瓶頸
然而,洗牌階段似乎是一個巨大的瓶頸。 reduce任務可能會接收來自所有map任務的中間鍵/值對,並且幾乎所有這些中間鍵/值對都將通過網絡進行流式傳輸。
當使用數百GB或更多GB數據時,是否需要使用組合器來獲得高效的MapReduce作業?
關於循環緩衝區:我的理解是worker節點向內存緩衝區發出中間鍵值對,並且週期性地將緩衝的鍵值對寫入本地磁盤。但是RAM和磁盤對工作人員來說都是本地的 - 當我們流向潛在的每個reducer節點時,這是如何在混洗階段減少網絡帶寬的? – Ben
我正在談論整體性能,但無論如何間接它也會幫助減速器級別,減少溢出意味着更少的時間來合併溢出文件,所以輸出將提前準備好,然後減速器線程可以開始複製數據。 – user3484461