shuffle过程简介--笔记

数据保存在hdfs上

拿到数据后分片处理

输入到Map

输出键值对

写到缓存,满的时候溢写到磁盘

缓存的数据写入磁盘的过程中,分区排序,合并

多个磁盘文件归并

通知Reduce任务拉取



shuffle过程简介--笔记

Map端的shuffle

1输入数据和执行任务:

分片后分配Map任务,每个任务分配100M缓存

2写入缓存

在溢写过程中:

3溢写 溢写比达到0.8后启动溢写进程,把缓存写入到磁盘

分区:默认采用哈希函数

排序:默认操作

合并:可能发生(Combine),减少键值对数量

4文件归并:

在Map任务结束前进行归并

归并得到一个打文件,放在本地磁盘

如果溢写文件大于3时启动Combine操作





Reduce端的Shuffle任务

1Reduce从Map任务中拉取数据到本地

2先归并再合并,写入磁盘

3多个溢写文件归并成一个或多个大文件,文件中的键值对是排序的

4当文件很少的时候,不需要溢写,直接在缓存中归并,然后输出给Reduce

上一篇:Ural 1309 Dispute (递归)


下一篇:LINQ系列:LINQ to DataSet的DataTable操作