2012-03-11 27 views
0

我已經編寫了一個Hadoop Map Reduce作業。當我在本地運行它時,我注意到如果我沒有指定任何減少任務,則會將一些臨時文件寫入輸出目錄。如果我指定reducer,則不寫入臨時文件。這是正常的行爲嗎?我期望看到寫入的臨時文件,否則這將意味着映射器試圖在內存中執行所有操作,然後將其傳輸到內存中的reducer。這讓我感到難以置信。指定reducer時的中間輸出

任何有關如何/何時/何地映射器將中間輸出寫入文件系統的見解將值得讚賞。

感謝

回答

9

Map任務寫自己的輸出到本地磁盤,而不是HDFS。地圖輸出 是中間輸出:它由減少任務處理以產生最終輸出,並且一旦作業完成,地圖輸出可以被丟棄。因此將其存儲在HDFS中, 與複製,將是矯枉過正。

但是,如果我們將減速器的數量設置爲0,那麼映射輸出將作爲最終輸出存儲在HDFS上。沒有縮減階段,所以mapper的輸出是整個工作的輸出。

此外here是如何查看中間文件即使reducer指定。

+0

這很有道理。謝謝! – 2012-03-11 03:12:45