MapReduce之shuffle
来源:互联网 发布:学生护手霜推荐 知乎 编辑:程序博客网 时间:2024/05/17 03:36
从map()的输出到reduce()的输入,中间的过程被称为shuffle过程。
map side
1.在写入磁盘之前,会先写入环形缓冲区(circular memory buffer),默认100M(mapreduce.task.io.sort.mb可修改),当缓冲区内容达到80M(mapreduce.map.sort.spill.percent可修改),缓冲区内容会被溢写到磁盘,形成一个spill file文件。
2.分区:在写入磁盘之前,会先进分区(partition),而partition的数量是由reducer的数量决定的job.setNumReduceTasks(2);默认是用map输出的<key,value>中key的hashcode对NumReduceTasks的个数取余,相同的分到一个区。
3.排序:在每一个partition中,都会有一个sort by key。
4.combiner:如果有combiner function,在sort之后会执行combiner,相当于map阶段的rudece 【满足数学运算的交换律和结合律】。
5.merge:数个spill files会合并(merge)成一个分过区的排过序的文件。
6.compress压缩the map output。
mapreduce.task.io.sort.factor 一次性合并小文件的数量 默认10个;
mapreduce.map.output.compress 启用压缩,默认是false;
org.apache.hadoop.io.compress.DefaultCodec 默认使用的压缩算法。
reduce side
1.解压缩:如果在map side 已经压缩过,在合并排序之前要先进行解压缩;
2.sort phase(merge);
3.group phase:将相同key的value分到一组,形成一个集合。
- MapReduce之shuffle过程
- mapreduce之shuffle原理
- MapReduce之shuffle
- MapReduce之shuffle
- MapReduce之shuffle
- MapReduce 之shuffle过程
- MapReduce之Shuffle
- MapReduce之Shuffle过程详述
- MapReduce之Shuffle过程详解
- MapReduce详解之shuffle阶段
- Mapreduce shuffle
- spark shuffle mapreduce shuffle
- Hadoop学习之mapreduce:Shuffle 过程笔记
- hadoop之shuffle------>MapReduce的心脏i
- 7 MapReduce进阶之shuffle阶段
- Hadoop入门之Mapreduce流程Shuffle过程
- 通过编程方式详解MapReduce之Shuffle 三个阶段
- 实战录 | Hadoop Mapreduce shuffle之Combine探讨
- 简单排序Java实现(三):希尔排序,堆排序
- 分解质因数
- html元素水平居中的几种方法
- nodejs的路由控制制作
- HYSBZ2243 染色【树链剖分】
- MapReduce之shuffle
- WOJ1099-flirly
- java的String类
- 6-3 使用函数输出指定范围内的完数
- HDU-6187:Destroy Walls
- NYOJ 399 整除个数
- .net调用C++代码需要注意的一些问题
- 6-4 使用函数输出指定范围内的Fibonacci数
- [js高手之路]this知多少