首页 > 代码库 > shuffle过程的简单描述
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。