WordCount处理过程
Hadoop mapreduce過程key 和value分別存什么值
轉自:https://www.cnblogs.com/gaopeng527/p/5436820.html
這里以wordCount為例,直接看圖就懂了:
?
(1)inputFormat將hdfs上要處理的文件一行一行的讀入,將文件拆分成splits,由于測試用的文件較小,所以每個文件為一個split,并將文件按行分割形成<key,value>對,如圖4-1所示。這一步由MapReduce框架自動完成,其中偏移量(即key值)包括了回車所占的字符數(Windows和Linux環境會不同)。
這里是把每個文件按行處理,下圖有兩個文件,每個文件有兩行,每一行的開頭字符所在位置的偏移量?,第一行的開頭偏移量自然是0,hello world共10個偏移量,加上中間的空格11個偏移量,回車再算一個,第二行的開頭偏移量是12.
?
?
圖4-1 分割過程
?
2)將分割好的<key,value>對交給用戶定義的map方法進行處理,生成新的<key,value>對,如圖4-2所示。
?這里是用戶自定義的map處理程序,每一行的字符按“ ” 分割,分割的每一個元素都記為1,也就是map節點的所有value都是1
?
圖4-2 執行map方法
?
3)得到map方法輸出的<key,value>對后,Mapper會將它們按照key值進行排序,并執行Combine過程,將key至相同value值累加,得到Mapper的最終輸出結果。如圖4-3所示。
?
?
圖4-3 Map端排序及Combine過程
?
4)Reducer先對從Mapper接收的數據進行排序,再交由用戶自定義的reduce方法進行處理,得到新的<key,value>對,并作為WordCount的輸出結果,如圖4-4所示。
?
?
圖4-4 Reduce端排序及輸出結果
總結
以上是生活随笔為你收集整理的WordCount处理过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 位运算与逻辑运算
- 下一篇: 详述switch分支语句