MapReduce執行過程

  • MapReduce之Map階段執行過程
1:框架會把輸入文件(夾)劃分爲不少InputSplit,默認,每一個HDFS的Block對應一個InputSplit。經過RecordReader類,把每一個InputSplit解析成一個個<K1,V1>。默認,每一行會被解析成一個<K1,V1>。
2:框架調用Mapper類中的map(...)函數,map函數的形參是<K1,V1>,輸出是<K2,V2>。一個InputSplit對應一個map task。
3:框架對map函數輸出的<K2,V2>進行分區。不一樣分區中的<K2,V2>由不一樣的reduce task處理,默認只有一個分區。
4:框架對每一個分區中的數據,按照K2進行排序、分組。分組指的是相同K2的V2分紅一個組。
5:在map節點,框架能夠執行reduce歸約,此步驟爲可選頂。
6:框架會把map task輸出的<K2,V2>寫入到Linux的磁盤文件中。
至此,整個map階段結束。

MapReduce之reduce階段執行過程網絡

1:框架對多個map任務的輸出,按照不一樣的分區,經過網絡copy到不一樣的reduce節點,這個過程稱做shuffle。
2:框架對reduce端接收到的相同分區的<K2,V2>數據進行合併、排序、分組。
3:框架調用Reducer類中的reduce方法,輸入<K2,{V2...}>,輸出<K3,V3>。一個<K2,{V2...}>調用一次reduce函數。
4:框架把reduce的輸出保存到HDFS中。
至此,整個reduce階段結束。
相關文章
相關標籤/搜索