2014-05-10 58 views
3

我躍躍欲試考試,這裏是在講義一個問題:爲什麼Map任務輸出寫入本地磁盤而不是HDFS?

Why Map tasks outputs are written to the local disk and not to HDFS? 

這裏是我的想法:

  • 減少網絡流量使用情況作還原劑可以在同一臺計算機上運行輸出如此複製不需要。
  • 不需要HDFS的容錯。如果工作中途中斷,我們總是可以重新執行地圖任務。

其他可能的原因是什麼?我的答案是否合理?

回答

6

你的推理是正確的。
但是我想補充幾點:如果地圖輸出寫入hdfs會怎麼樣。
現在,寫入hdfs不像寫入本地磁盤。這是一個更復雜的過程與namenode確保至少dfs.replication.min副本寫入hdfs。並且namenode也會運行後臺線程爲複製塊創建額外的副本。
假設用戶之間殺死了工作或者工作失敗了。將有大量的中間文件,無需您手動刪除hdfs。如果這個過程發生太多次,你的集羣的性能會降低。 Hdfs針對追加進行了優化,而不是經常刪除
另外,在映射階段,如果作業失敗,它將在退出之前執行清理。如果是hdfs,則刪除過程將要求namenode向相應的datanodes發送塊刪除消息,這將導致該塊無效,並從blocksMap中刪除。如此多的操作只涉及一次失敗的清理並且沒有收穫!

-1

有一點我知道將地圖輸出寫入本地文件系統,所有映射器的輸出最終會被合併,並最終爲Reducer階段之前的混洗和排序階段提供輸入。

相關問題