MapReduce中的Shuffle原理

source: MapReduce shuffle过程详解_xidianycy-CSDN博客_mapreduce shuffle

  • 简述

  HDFS中的MapReduce计算模型主要分为3个部分: Map, Shuffle, Reduce.

    • Map是映射, 将原始数据转化为键值(key-values)对.
    • Reduce是合并, 将具有相同key值的values处理后再输出新的键值对作为最终结果.
    • 为了让Reduce能够并行处理, 需要对Map后的键值对进行排序和分割, 然后再交给对应的Reduce, 这个过程我们称为Shuffle.

  整个MR过程大致如下:

  • Shuffle详解

  Map和Reduce操作需要我们自己定义相应Map类和Reduce类,以完成我们所需要的化简、合并操作,而shuffle则是系统自动帮我们实现的,了解shuffle的具体流程能帮助我们编写出更加高效的Mapreduce程序.

  Shuffle过程包含在Map和Reduce两端,即Map shuffle和Reduce shuffle.

  • Map shuffle

  在Map端的shuffle过程是对Map的结果进行分区、排序、分割,然后将属于同一分区的输出合并在一起并写在磁盘上,最终得到一个分区有序的文件.

  分区有序的含义是map输出的键值对中,具有相同partition值的键值对存储在同一个分区,每个分区里面的键值对又按key值进行升序排列(默认).

 

  • Reduce shuffle

  在Reduce端,shuffle主要分为复制Map输出、排序合并两个阶段. 最终输出一个整体有序的数据块.

    • Copy

      Reduce任务通过HTTP向各个Map任务拖取它所需要的数据. 

    • Merge Sort

      Copy过来的数据会先放到内存缓冲区, 属于内存到内存merge. 当内存放不下时, 开始内存到磁盘merge.

      当属于该reducer的map输出全部拷贝完成,则会在reducer上生成多个文件,这时开始执行合并操作,即磁盘到磁盘merge.

 

posted @ 2021-10-19 14:40  Raylan  阅读(313)  评论(0)    收藏  举报