千家信息网

hadoop中系统执行排序的过程叫什么

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章给大家分享的是有关hadoop中系统执行排序的过程叫什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。MapReduce确保每个reducer的输入都是按键排序的,
千家信息网最后更新 2026年10月31日hadoop中系统执行排序的过程叫什么

这篇文章给大家分享的是有关hadoop中系统执行排序的过程叫什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

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上,会造成存储空间的浪费(会产生三个副本)。

  • 用户自定义Combiner

    Combiner可以减少Map阶段的中间输出结果数,降低网络开销。默认情况下是没有Combiner的。用户自定义的Combiner要求是Reducer的子类,以Map的输出作为Combiner的输入和输出,也就是说Combiner的输入和输出必须是一样的。

    可以通过job.setCombinerClass设置combiner的处理类,MapReduce框架不保证一定会调用该类的方法。

    注意:如果reduce的输入和输出一样,则可以直接用reduce类作为combiner

  • 用户自定义Partitioner

    Partitioner是用于确定map输出的对应的处理reducer是那个节点。默认MapReduce任务reduce个数为1个,此时Partitioner其实没有什么效果,但是当我们将reduce个数修改为多个的时候,partitioner就会决定key所对应reduce的节点序号(从0开始)。

    可以通过job.setPartitionerClass方法指定Partitioner类,默认情况下使用HashPartitioner(默认调用key的hashCode方法)。

  • 用户自定义Group

    GroupingComparator是用于将Map输出的进行分组组合成>的关键类,直白来讲就是用于确定key1和key2是否属于同一组,如果是同一组,就将map的输出value进行组合。

    要求我们自定义的类实现自接口RawComparator,可以通过job.setGroupingComparatorClass方法指定比较类。默认情况下使用WritableComparator,但是最终调用key的compareTo方法进行比较。

  • 用户自定义Sort

    SortComparator是用于将Map输出的进行key排序的关键类, 直白来讲就是用于确定key1所属组和key2所属组那个在前,那个在后。

    要求我们自定义的类实现自接口RawComparator,可以通过job.setSortComparatorClass方法指定比较类。默认情况下使用WritableComparator,但是最终调用key的compareTo方法进行比较。

  • 用户自定义Reducer的Shuffle

    在reduce端拉取map的输出数据的时候,会进行shuffle(合并排序),MapReduce框架以插件模式提供了一个自定义的方式,我们可以通过实现接口ShuffleConsumerPlugin,并指定参数mapreduce.job.reduce.shuffle.consumer.plugin.class来指定自定义的shuffle规则,但是一般情况下,直接采用默认的类org.apache.hadoop.mapreduce.task.reduce.Shuffle。

感谢各位的阅读!关于"hadoop中系统执行排序的过程叫什么"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

阶段 输出 排序 文件 方法 系统 过程 任务 用户 输入 可以通过 情况 数据 内容 磁盘 就是 接口 节点 运行 直白 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 高科技互联网 今日互联网科技 网络科技有限互联网 互联网科技金融公司 礼当家互联网科技 北京禾田雨橡互联网科技 左右互联网络科技 成都玖崟互联网科技有限公司乐商圈怎么样 现代科技和互联网有关系吗 广州优美互联网科技 互联网之后的科技是什么 中国科技创新与世界互联网大会 广州新华互联网科技学校电竞方面 世界互联网领先科技成果获奖 元气玛特互联网科技公司是外包吗 宇信科技在杭州互联网排第几 互联网硬科技公司 福仕德教育科技互联网 科技互联网经济论坛 小牛互联网科技有限公司地址 上海挚品互联网科技有限公司 互联网和高科技公司 互联网科技创新服务 消费医药和互联网科技 深圳艾果互联网通讯科技 上海科技产业互联网平台 互联网企业科技类企业如何做账 互联网营销推广黑科技 长沙渺峰互联网科技有限公司 科技发展第三阶段互联网时代
0