• 技术文章 >常见问题

    系统执行排序的过程称为什么

    青灯夜游青灯夜游2021-04-25 17:10:19原创319

    MapReduce确保每个reducer的输入都是按键排序的,系统执行排序的过程称为shuffle。shuffle阶段主要包括map阶段的combine、group、sort、partition以及reducer阶段的合并排序。

    本教程操作环境:windows7系统,Dell G3电脑。

    MapReduce确保每个reducer的输入都是按键排序的,系统执行排序的过程称为shuffle。我们可以理解为map产生输出到reduce的消化输入的整个工程。

    Map端:每个mapperTask有一个环形内存缓冲区,用于存储map任务的输出,一旦达到阈值,一个后台线程把内容写到磁盘的指定目录下的新建的一个溢出写文件,写磁盘前要经过partition、sort、Combiner。等最后记录写完,合并全部溢出写文件为一个分区且排序的文件。

    Reduce端:可以分为复制阶段、排序阶段、reduce阶段

    复制阶段:map输出文件位于运行map任务的tasktracker的本地磁盘上,reduce通过http的方式获取输出文件的分区,tasktracker为分区文件运行reduce任务,只要有一个map任务完成,reduce任务就开始复制输出。

    排序阶段:更恰当的说法是合并阶段,因为排序是在map端进行的。这个阶段将合并map输出,维持其顺序排序,循环进行。

    最后阶段就是reduce阶段,对已排序输出中的每个键调用reduce函数,此阶段的输出直接写到输出文件系统,一般为hdfs。、

    Shuffle阶段说明

    shuffle阶段主要包括map阶段的combine、group、sort、partition以及reducer阶段的合并排序。Map阶段通过shuffle后会将输出数据按照reduce的分区分文件的保存,文件内容是按照定义的sort进行排序好的。Map阶段完成后会通知ApplicationMaster,然后AM会通知Reduce进行数据的拉取,在拉取过程中进行reduce端的shuffle过程。

    注意:Map阶段的输出数据是存在运行Map节点的磁盘上,是个临时文件,不是存在HDFS上,在Reduce拉取数据后,那个临时文件会删除,若是存在hdfs上,会造成存储空间的浪费(会产生三个副本)。

    更多编程相关知识,请访问:编程视频!!

    以上就是系统执行排序的过程称为什么的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Hadoop shuffle
    上一篇:怎么调整ppt页面比例为16:9 下一篇:wmv格式如何转换成mp4

    相关文章推荐

    • apache hadoop是什么意思• Hadoop是用于分布式计算的,它是什么东西• hadoop的核心是分布式文件系统hdfs和什么?• hdfs在hadoop中的作用是什么?

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网