映射器的輸出(中間數據)存儲每個單獨的映射數據的節點的本地文件系統(未HDFS)上。這通常是臨時目錄,可以由Hadoop管理員在配置中設置。一旦Mapper作業完成或數據傳輸到Reducer,這些中間數據就會被清理乾淨並且無法訪問。
但是,我想知道映射器何時將其輸出存儲到本地硬盤?是否因爲數據太大而無法存儲?只有正在處理的數據保留在內存中?如果數據很小並且整個數據可以放在內存中,那麼沒有磁盤參與?
在mapper m/c的硬盤沒有介入的情況下,我們能不能直接將數據在mapper中處理後從mapper轉移到reducer。我的意思是當數據在映射器中被處理時,它在內存中,一旦計算出來,它就直接傳遞給reducer,映射器可以傳遞下一塊數據,類似地沒有磁盤捲入。
在spark中,據說有內存中的計算,與上面有什麼不同?什麼讓火花計算內存比地圖減少更好?另外,如果數據過於龐大,那麼就會出現磁盤捲入的情況。
請解釋
非常感謝你這麼深入的回答。但是,通過mapreduce分區,你的意思是洗牌嗎?這裏他們是一樣的嗎? –
閱讀此https://stackoverflow.com/questions/22141631/what-is-the-purpose-of-shuffling-and-sorting-phase-in-the-reducer-in-map-reduce –
你一直非常有幫助,你也可以請回答這個問題[鏈接](https://stackoverflow.com/questions/44351229/what-does-the-shuffling-phase-actually-do)..感謝很多 –