Shuffle过程详解 在map端的 Shuffle过程是对map的结果进行划分( partition)、排序 (sort)和spll(溢写),然后将属于同一个划分的输出合并在一起 并写到磁盘上,同时按照不同的划分将结果发送给对应的 reduce( map输出的划分与 reduce的对应关系由 Job tracker确定)。 Reduce 端又会将各个map送来的属于同一个划分的输出进行合并( merge) 然后对 merge的结果进行排序,最后交给 reduce处理。 Map任务 溢写(分区、排序、合并)在务数 数据被Red Reduce任务 缓存 输入 磁盘文件归并 输出 Map 多个分区 其他Map任务 其他 Reduce任务
《大数据技术基础》 Shuffle过程详解 • 在map端的shuffle过程是对map的结果进行划分(partition)、排序 (sort)和spill(溢写),然后将属于同一个划分的输出合并在一起 ,并写到磁盘上,同时按照不同的划分将结果发送给对应的reduce( map输出的划分与reduce的对应关系由JobTracker确定)。Reduce 端又会将各个map送来的属于同一个划分的输出进行合并(merge) ,然后对merge的结果进行排序,最后交给reduce处理
Shuffle过程详解-Map端 下图是某个假想的 map task的运行情况,可以清楚地说明划分 partition,排序(sort)与合并( combiner)作用在 MapReduce工 作流程的哪个阶段 输入数据和执行Map任务 Map任 ②写入缓存 ③溢写(分区、排序、合并) 件归并 《大数据技术基础》
《大数据技术基础》 Shuffle过程详解 – Map端 • 下图是某个假想的map task的运行情况,可以清楚地说明划分( partition),排序(sort)与合并(combiner)作用在MapReduce工 作流程的哪个阶段
Shuffle过程详解-Map端 简单地说,每个 map task都有一个内存缓冲区,存储着map的输出 结果,当缓冲区快满的时候,需要将缓冲区的数据以一个临时文件 的方式存放到磁盘,当整个 map task结束后,再对磁盘中这个map task产生的所有临时文件做合并,生成最终的正式输出文件,然后等 待 reduce task来拉数据。 《大数据技术基础》
《大数据技术基础》 Shuffle过程详解 – Map端 • 简单地说,每个map task都有一个内存缓冲区,存储着map的输出 结果,当缓冲区快满的时候,需要将缓冲区的数据以一个临时文件 的方式存放到磁盘,当整个map task结束后,再对磁盘中这个map task产生的所有临时文件做合并,生成最终的正式输出文件,然后等 待reduce task来拉数据
Shuffle过程详解-Map端 Map端的 Shuffle流程可分为四个步骤: 1. Map task执行:它的输入数据来源于HDFS的 block 2. Mapper运行: mapper的输出是一个 key/value对 3.Spl内存缓冲区是有大小限制的(默认是100MB)。当 map task 的输出结果很多时,就可能会撑爆内存,所以需要在一定条件下将 缓冲区中的数据临时写入磁盘,然后重新利用这块缓冲区。这个从 内存往磁盘写数据的过程被称为Spl Merge:每次溢写会在磁盘上生成一个溢写文件,如果map的输出结 果真的很大,有多次这样的溢写发生,磁盘上相应的就会有多个溢 写文件存在。当 map task真正完成时,内存缓冲区中的数据也全部 溢写到磁盘中形成一个溢写文件。最终,磁盘中会至少有一个这样 的溢写文件存在。因为最终的文件只有一个,所以需要将这些溢写 文件归并到一起,这个过程就叫做 Merge 《大数据技术基础》
《大数据技术基础》 Shuffle过程详解 – Map端 • 1. 2. 3. Map端的shuffle流程可分为四个步骤: Map task执行:它的输入数据来源于HDFS的block Mapper运行:mapper的输出是一个key/value对。 Spill:内存缓冲区是有大小限制的(默认是100MB)。当map task 的输出结果很多时,就可能会撑爆内存,所以需要在一定条件下将 缓冲区中的数据临时写入磁盘,然后重新利用这块缓冲区。这个从 内存往磁盘写数据的过程被称为Spill。 4. Merge:每次溢写会在磁盘上生成一个溢写文件,如果map的输出结 果真的很大,有多次这样的溢写发生,磁盘上相应的就会有多个溢 写文件存在。当map task真正完成时,内存缓冲区中的数据也全部 溢写到磁盘中形成一个溢写文件。最终,磁盘中会至少有一个这样 的溢写文件存在。因为最终的文件只有一个,所以需要将这些溢写 文件归并到一起,这个过程就叫做Merge
Shuffle过程详解- Reduce端 当 map task执行完成, Shuffle的后半段过程开始启动。 简单地说, reduce task在执行之前的工作就是不断地拉取当前job里 每个 map task的最终结果,然后对从不同地方拉取过来的数据不断 地做 merge,也最终形成一个文件作为 reduce task的输入文件 其他 Reduce任务 Map任务 ①领取”数据 Reduce任务 缓存 i磁盘 ②归并数据 把数据输入给 任务 其他Map任务 文件归并 →其他 Reduce任务 《大数据技术基础》
《大数据技术基础》 Shuffle过程详解 – Reduce端 • 当map task执行完成,Shuffle的后半段过程开始启动。 • 简单地说,reduce task在执行之前的工作就是不断地拉取当前job里 每个map task的最终结果,然后对从不同地方拉取过来的数据不断 地做merge,也最终形成一个文件作为reduce task的输入文件