整理mapReducer 的shuffle过程文档格式.docx
《整理mapReducer 的shuffle过程文档格式.docx》由会员分享,可在线阅读,更多相关《整理mapReducer 的shuffle过程文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
>
Map端
总结
在map端首先接触的是InputSplit,在InputSplit中含有DataNode中的数据,每一个InputSplit都会分配一个Mapper任务,Mapper任务结束后产生<
K2,V2>
的输出,这些输出先存放在缓存中,每个map有一个环形内存缓冲区,用于存储任务的输出。
默认大小100MB(io.sort.mb属性),一旦达到阀值0.8(io.sort.spill.percent),一个后台线程就把内容写到(spill)Linux本地磁盘中
的指定目录(mapred.local.dir)下的新建的一个溢出写文件。
写磁盘前,要进行partition、sort和combine等操作。
通过分区,将不同类型的数据分开处理,之后对不同分区的数据进行排序,如果有Combiner,还要对排序后的数据进行combine。
等最后记录写完,将全部溢出文件合并为一个分区且排序的文件。
补充
>
最后将磁盘中的数据送到Reduce中,从图中可以看出Map输出有三个分区,有一个分区数据被送到图示的Reduce任务中,剩下的两个分区被送到其他Reducer任务中。
而图示的Reducer任务的其他的三个输入则来自其他节点的Map输出。
Reduce端
Copy阶段:
Reducer通过Http方式得到输出文件的分区。
reduce端可能从n个map的结果中获取数据,而这些map的执行速度不尽相同,当其中一个map运行结束时,reduce就会从JobTracker中获取该信息。
map运行结束后TaskTracker会得到消息,进而将消息汇报给JobTracker,reduce定时从JobTracker获取该信息,reduce端默认有5个数据复制线程从map端复制数据。
Merge阶段:
如果形成多个磁盘文件会进行合并
从map端复制来的数据首先写到reduce端的缓存中,同样缓存占用到达一定阈值后会将数据写到磁盘中,同样会进行partition、combine、排序等过程。
如果形成了多个磁盘文件还会进行合并,最后一次合并的结果作为reduce的输入而不是写入到磁盘中。
Reducer的参数:
最后将合并后的结果作为输入传入Reduce任务中。
**整理源:
2.编写测试案例一,案例二
【案例分析一:
网站PVUV分析】
学习内容:
1.离线hadoop大数据分析的一个ETL数据过滤清洗阶段
E>
extarct,数据的抽取
T>
Transform
L>
Laod
2.了解应用hadoop分析网站统计指标
3.网站统计分析的基本指标
WebPvUvMapRedduce
需要导入的包
【案例分析二】
统计每个手机号码的上行总流量、下行总流量,总流量(上行+下行)之和
FlowBean
SumFlowMR