Java中的mapreduce没了_MapReduce的过程总结
MapReduce 分為:
1) MapTask :
1.Read階段:邏輯切片 128M / Maptask 讀數(shù)據(jù)解析出一個個key/value。
2.Map階段: 把key/value 寫入到map中去(處理業(yè)務邏輯)
3.Collect階段:將生成的key/value分區(qū)(調用Partitioner)排序,并寫入一個環(huán)形內存緩沖區(qū)中。
4.溢寫階段:分區(qū)寫入到文件且有序。
5.Combine階段:歸并排序,把眾多小文件合并成大文件。
一個大文件邏輯切分成好多片(128mb一片),一片啟動一個map, 多個map之間處理的數(shù)據(jù)有相同的分區(qū)但是處理的不同。有可能第二片里面也有分區(qū)1的數(shù)據(jù)。第一片里也有。
2)Shuffer:Map方法之后,Reduce方法之前的數(shù)據(jù)處理過程稱之為Shuffle。(和兩個有重合部分)
1.Map的shuffer過程:就是從Map里面寫入到環(huán)形緩沖區(qū)中要先進行分區(qū)然后排序再百分之80的時候溢寫到磁盤中,接著把map之間分區(qū)數(shù)據(jù)歸并排序 (多個有序的小文件形成一個大的有序的文件)然后可壓縮后 再溢寫到磁盤對應的分區(qū)上。
2.Reduce的shuffer過程: 把分區(qū)數(shù)據(jù)拷貝到內存緩沖區(qū)中(如果不夠就溢寫到磁盤中 )然后進行歸并排序,生成一個大的有序的文件。按照相同key分成一組!之后放到reduce里面去。 (進入到reduce里面的數(shù)據(jù),key必須相同)
3)ReduceTask
1.Copy階段:將對應分區(qū)下的數(shù)據(jù)拷貝到reduce,沒有達到內存上限就存到內存當中,如果超過了就存到磁盤中。
2.Merge階段:? 多個文件合并成一個大的文件。
3.Sort階段:然后將大文件排序。
4.Reduce階段:將相同key的拷貝到一個reduce文件里面去,最終處理完輸出。
數(shù)據(jù)傾斜:就是其他人忙的要死,他閑的要命。
combiner :在MAPtask的局部匯總操作,父類是Reducer 區(qū)別是combiner在map操作? reducer在reduce操作。(不適合求平均值? 適合累加匯總操作)。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的Java中的mapreduce没了_MapReduce的过程总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++学习之路 | PTA乙级—— 10
- 下一篇: java单例方法_Java单例模式