hadoop之mapreduce复述

上一篇 / 下一篇  2011-10-16 16:02:10 / 个人分类:hadoop/hive

来淘宝之前就知道hadoop,到淘宝后第一个周末就知道了mapreduce,直到前几天我对mapreduce的理解仍停留在一张图片上,那张图片的内容就是对输入进行分片,也就是map的过程,经过处理计算后再根据相应的函数规则统计结果就是reduce,经过reduce后输出结果。姑且不论这种理解正确与否,至少map和reduce我都没弄清楚,怎么个map,怎么个reduce,如今慢慢道来。
首先mapreduce并不只map和reduce两个阶段,一般如下(以[a,b,c,a,b,b,c,a]):
1.input阶段:根据输入文件和map数据系统产生相应的文件块。一般说来有多少个输入就有多少个map,文件块block的大小为64M或者128M。(大的文件在切割时可能某一个block没有64M,但是不能超过64M,日志文件可以根据换行符判断。当然也不会出现跨文件切割)
[a,b,c,a,b,b,c,a]->[a,b,c,a],[b,b,c,a]
2.Map阶段:每个Map根据用户的输入的key-value对转化成新的key-value对。
M1:[a,1],[b,1],[c,1],[a,1]
M2:[b,1],[b,1],[c,1],[a,1]
3.shuffle&sort阶段:系统对Map输出进行排序并发送到相应的reduce上。整理合并排序都在本机上进行。
M1:[a,2],[b,1],[c,1]
M2:[b,2],[a,1],[c,1](combiner:经过合并后可以减少shuffle数量)
R1:[a,2],[a,1]
R2:[b,2],[b,1],[c,1],[c,1](partitioner:对mapper结果分配到不同reducer,一般是根据reducer数目做hash)
4.reduce阶段:把所有相同的key的记录合成一个key-value对。
O1:[a,3]
O2:[b,2],[c,2]
5.output阶段:把输出结果写到dfs
好啦,目前我知道了就这么些了,虽然比原来的理解要清晰了,但是mapreduce仍有更深入的知识等待去了解,路漫漫其修远兮,吾将上下而求索!

TAG:

 

评分:0

我来说两句

日历

« 2024-04-03  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 36352
  • 日志数: 15
  • 建立时间: 2011-09-30
  • 更新时间: 2012-03-27

RSS订阅

Open Toolbar