2017-02-09 63 views
0

「hadoop權威指南 - 湯姆白」一書的摘要是:什麼是確切的Map Reduce WorkFlow?

用戶映射函數和用戶的reduce函數之間的所有邏輯都稱爲shuffle。然後,隨機播放跨越地圖和縮小。在用戶的map()函數之後,輸出位於內存循環緩衝區中。當緩衝區已滿80%時,後臺線程開始運行。後臺線程會將緩衝區的內容輸出到溢出文件中。此泄漏文件按鍵分區。在每個分區中,鍵值對按鍵排序。排序後,如果啓用了組合器功能,則會調用組合器功能。所有的溢出文件將被合併到一個MapOutputFile中。所有Map任務的MapOutputFile將通過網絡收集以減少任務。減少任務將做另一種。然後調用用戶的Reduce函數。

所以問題是:

1)根據以上總結,這是流程:

映射 - Partioner - 排序 - 合 - 洗牌 - 排序 - 減速機 - 輸出

1a。)這是流量還是別的嗎?

1b。)你能用一個例子說出上面的流程來說明單詞計數的例子嗎(我在網上找到的那個不是那個詳盡的)?

2.)所以mappers階段輸出是一個大文件(MapOutputFile)?這是一個大文件,並將鍵值對傳遞給相應的reducer?

3.)爲什麼排序第二次發生,當數據已被排序&合併時傳遞到其各自的reducer?

4.)說如果mapper1在Datanode1上運行,那麼reducer1是否需要在datanode1上運行?或者它可以在任何Datanode上運行?

回答

0

回答這個問題就像重寫整個歷史一樣。很多疑問都與操作系統概念有關,而不是MapReduce。

  1. 映射器數據寫在本地文件系統上。數據根據還原器的數量進行分區。並且在每個分區中,可能會有多個文件基於溢出發生的時間。
  2. 在寫入文件之前,給定分區中的每個小文件都被排序,在內存排序完成後。
  3. 爲什麼數據需要在映射器端進行排序? a。數據在映射器端進行排序和合並以減少文件數量。 b。文件被排序,因爲減速器上不可能收集給定鍵的所有值。需要
  4. 收集關於減速器數據,文件的第一數量,以及系統上之後被減小(記住ULIMIT具有固定的量爲在此情況下HDFS每個用戶)
  5. 減速器只是維持在一個小組一個文件指針排序後的文件並進行合併。

瞭解更多有趣的想法請參考: http://bytepadding.com/big-data/map-reduce/understanding-map-reduce-the-missing-guide/