shuffle過程的簡單描述

shuffle是處在map和reduce之間的過程。我們看一下這個過程都有哪些步驟,對這個問題了解的並不深,可能有錯誤,忘指正

1. map

map輸出key,value,對應代碼裏的context.write(key, value);,這個步驟是將key,value寫到內存buffer裏了,這個內存的默認大小是100M

2. sort

當數據大小超過buffer容量的80%(默認)時,會將這部分數據進行排序,按照partition和key值進行排序,partition代表的是會分到哪個reducer裏

3. 溢寫

排好序之後將數據寫到磁盤上

4. merge

因爲很多時候不是一次溢寫就可以了,可能會經過多次溢寫,所以會在磁盤上產生多個文件,這個時候就需要將文件進行合併。

5. copy

通過http的方式將上一個步驟中的磁盤上的數據copy到對應的reduce端

6. mergesort

每個map的輸出端的文件時按照key排好序的,這個地方是對多個map端的文件按照key進行排序,邊merge邊sort

7. reduce

更詳細的內容見這篇博文

http://blog.csdn.net/nwpuwyk/article/details/37904657


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章