MR中Shuffle过程中sort总结
来源:互联网 发布:mac无法重装系统 编辑:程序博客网 时间:2024/05/18 01:41
原文: http://blog.csdn.net/u013080251/article/details/60146294
写在前面的话:
新学期开学想重新复习一下Hadoop的知识,不断更新自己的知识库,在今天晚上阅读的过程中发现,有人已经总结了Mapreduce在shuffle过程中sort的实施。我以前从来都没有深入探究过sort过程应用的算法,以及sort的次数。今天我将其总结一下:
排序贯穿于Map任务和Reduce任务,是MapReduce非常重要的一环,排序操作属于MapReduce计算框架的默认行为,不管流程是否需要,都会进行排序。在MapReduce计算框架中,主要用到了两种排序方法:快速排序和归并排序
- 快速排序:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另外一部分的所有数据都小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此使整个数据成为有序序列。
- 归并排序:归并排序在分布式计算里面用的非常多,归并排序本身就是一个采用分治法的典型应用。归并排序是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个有序的子序列,再把有序的子序列合并为整体有序序列。
在map任务和reduce任务的过程中,一共发生3次排序操作。
- 当map函数产生输出时,会首先写入内存的环形缓冲区,当达到设定的阈值,在刷写磁盘之前,后台线程会将缓冲区的数据划分成相应的分区。在每个分区中,后台线程按键进行内排序,如下图5-18所示:
图5-18第一次和第二次排序 - 在Map任务完成之前,磁盘上存在多个已经分好区,并排好序的、大小和缓冲区一样的溢写文件,这时溢写文件将被合并成一个已分区且已排序的输出文件。由于溢写文件已经经过第一次排序,所以合并文件时只需要再做一次排序就可使输出文件整体有序。
- 在shuffle阶段,需要将多个Map任务的输出文件合并,由于经过第二次排序,所以合并文件时只需要再做一次排序就可使输出文件整体有序,如下图5-19所示。图5-19 第三次排序
在这3次排序中第一次是在内从缓冲区做的排序,使用的算法是快速排序,第二次排序和第三次排序都是在文件合并阶段发生的,使用的是归并排序。
阅读全文
0 0
- MR中Shuffle过程中sort总结
- shuffle过程中sort总结
- mr的shuffle过程
- 【MR】MapReduce中shuffle、partition、combiner的作用与关系
- MapReduce中Shuffle过程整理
- MapReduce中Shuffle过程整理
- MR shuffle
- Sprak中Shuffle的过程解析
- Ruby 中 sort方法、reverse方法、shuffle方法
- js中sort总结
- MapReduce:详解Shuffle(copy,sort,merge)过程
- MapReduce:详解Shuffle(copy,sort,merge)过程
- MapReduce:详解Shuffle(copy,sort,merge)过程
- MapReduce:详解Shuffle(copy,sort,merge)过程
- MapReduce:详解Shuffle(copy,sort,merge)过程
- MapReduce:详解Shuffle(copy,sort,merge)过程
- MapReduce:详解Shuffle(copy,sort,merge)过程
- MapReduce:详解Shuffle(copy,sort,merge)过程
- Android快速开发系列 10个常用工具类
- golang学习笔记
- nginx配置
- JavaScript面向对象基础与this指向问题
- 1002. 写出这个数 (20)
- MR中Shuffle过程中sort总结
- NOIP 2013 day 2 t1 t2
- linux中tftp服务器设置及测试
- 在 pod 中使用资源
- 升级xcode9 自动打包失败问题
- 在做自动化测试之前你需要知道的
- android项目中出现NullPointExcepition
- 排序算法的稳定性分析
- HDU-1029 Ignatius and the Princess IV