博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hadoop的shuffle和排序
阅读量:5031 次
发布时间:2019-06-12

本文共 728 字,大约阅读时间需要 2 分钟。

shuffle和排序
Shuffle阶段分为两部分:Map端和Reduce端。
 
 
一 map端shuffle过程;
1- 内存预排序:默认每个map有100M内存进行预排序(为了效率),超过阈值,会把内容写到磁盘;
    此过程使用 快速排序算法;
2-根据key和reducer的数量进行 分区和排序;首先根据数据所属的 Partition排序,然后每个Partition中再按Key排序;
   此过程排序默认使用 归并排序算法;
3- combiner,使得map的输出结果更紧凑,减少磁盘写入和传输的数据量。慎用,可能会对结果产生错误的结果;如果存在combiner阶段;
4-一个Map任务会产生多个spill文件,在Map任务完成前,所有的spill文件将会归并排序为一个索引文件和数据文件。当spill文件归并完成后,Map将删除所有的临时文件,并告知TaskTracker任务已完成。
 
二 reduce的shuffle阶段
1- copy阶段:Reduce端通过HTTP获取Map端的数据,只要有一个map任务完成,Reduce任务就开始复制它的输出。JobTracker知道Map输出与TaskTracker的映射关系,Reduce端有一个线程间歇地向JobTracker询问Map输出的地址,直到把所有的数据都获取到。
2-排序阶段,又称 合并阶段。将多个已经排序的文件合并成一个文件。Merge有三种形式:内存到内存,内存到磁盘,磁盘到磁盘。
   此过程 顺序比较插入排序算法,可能都不叫算法。只是对多个已排序文件合并成一个文件。

转载于:https://www.cnblogs.com/parent-absent-son/p/9919241.html

你可能感兴趣的文章
Confluence 6 SQL Server 数据库驱动修改
查看>>
Confluence 6 通过 SSL 或 HTTPS 运行 - 备注和问题解决
查看>>
【47.76%】【Round #380B】Spotlights
查看>>
Git(使用码云)
查看>>
分享Java web 开发必游之路
查看>>
IIS初始化(预加载),解决第一次访问慢,程序池被回收问题(转载)
查看>>
Bean的Scope
查看>>
【BZOJ】3142: [Hnoi2013]数列
查看>>
http初探
查看>>
W3C标准以及规范
查看>>
elasticsearch的安装
查看>>
__next__()
查看>>
爬取:中国大学排名
查看>>
聊天室(C++客户端+Pyhton服务器)_1.框架搭设
查看>>
UpdatePanel 内控件 更新“外的”控件【转】
查看>>
[CF508E] Arthur and Brackets
查看>>
[CF1029E] Tree with Small Distances
查看>>
tp5.0中及其常用方法的一些函数方法(自己看)和技巧(不断添加中)
查看>>
美团推荐算法实践
查看>>
自定义注解使用
查看>>