hadoop shuffle过程

 

 

1 处理过程图:

 


hadoop shuffle过程_第1张图片
 
2 对上图的继续解释:

 

map:

 

1. 1) Map 输出时,每个 map 有一个环形内存缓冲区,用于存储任务的输出。默认大小 100MB io.sort.mb 属性),一旦达到阀值 0.8 io.sort.spill.percent , 一个后台线程把 内容写到 (spill)linux 磁盘的指定目录( mapred.local.dir )下的新建的一个溢出写文件。
2. 2) 写磁盘前,在内存中要 partition 分区 ,sort 。如果有 combiner combine 排序后数据。
3. 3) 等最后记录写完,合并全部溢出写文件为一个分区且排序的文件。
 
shuffle: 就是reduce从map产生的 分区数据中拷贝数据的过程
 
reduce:
1. 1) Reducer 通过 Http 方式得到输出文件的分区 - à 这个过程就是 shuffle Reducer 代码可 看到对 shuffle 的注释解释
2. 2) TaskTracker 为分区文件运行 Reduce 任务。复制阶段把 Map 输出复制到 Reducer 的内 存或磁盘。一个 Map 任务完成, Reduce 就开始复制输出。
3. 3) 排序阶段合并 map 输出。然后走 Reduce 阶段。


 

你可能感兴趣的:(shuffle)