返回顶部
首页 > 资讯 > 精选 >hadoop中系统执行排序的过程叫什么
  • 730
分享到

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

2023-06-14 20:06:26 730人浏览 八月长安
摘要

这篇文章给大家分享的是有关hadoop中系统执行排序的过程叫什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。mapReduce确保每个reducer的输入都是按键排序的,系统执行排序的过程称为shuffle。s

这篇文章给大家分享的是有关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的输出<key,value>作为Combiner的输入<key,value>和输出<key,value>,也就是说Combiner的输入和输出必须是一样的。

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

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

  • 用户自定义Partitioner

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

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

  • 用户自定义Group

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

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

  • 用户自定义Sort

    SortComparator是用于将Map输出的<key,value>进行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中系统执行排序的过程叫什么”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: hadoop中系统执行排序的过程叫什么

本文链接: https://lsjlt.com/news/274728.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • hadoop中系统执行排序的过程叫什么
    这篇文章给大家分享的是有关hadoop中系统执行排序的过程叫什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。MapReduce确保每个reducer的输入都是按键排序的,系统执行排序的过程称为shuffle。s...
    99+
    2023-06-14
  • Java中jvm的执行过程是什么
    这期内容当中小编将会给大家带来有关Java中jvm的执行过程是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2....
    99+
    2023-06-14
  • struts2的执行过程是什么
    Struts2的执行过程可以分为以下几个步骤:1. 客户端发送请求:客户端通过浏览器向服务器发送HTTP请求。2. 请求被Strut...
    99+
    2023-08-18
    struts2
  • Python字节码与程序执行过程是什么
    今天小编给大家分享一下Python字节码与程序执行过程是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。问题:我们每天都要...
    99+
    2023-06-30
  • React中的render什么时候执行过程
    这篇文章主要介绍了React中的render什么时候执行过程,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我们都知道Render在组件实例化...
    99+
    2024-04-02
  • mysql中查询的执行过程是什么
    今天就跟大家聊聊有关mysql中查询的执行过程是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、过程客户端向MySQL服务器发送一条查询请求;服务器首先检查查询缓存,如果命中缓...
    99+
    2023-06-15
  • MySQL中order by的执行过程是什么
    本文小编为大家详细介绍“MySQL中order by的执行过程是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL中order by的执行过程是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来...
    99+
    2023-06-30
  • java中switch语句的执行过程是什么
    今天就跟大家聊聊有关java中switch语句的执行过程是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编...
    99+
    2023-06-14
  • 如何排除 PHP 函数执行过程中的错误?
    如何排除 php 函数执行过程中的错误?启用错误日志,记录运行时错误。注册错误处理函数,自定义错误处理。安装 xdebug 扩展,提供高级调试功能。使用 ide 或编辑器内置的调试器,单...
    99+
    2024-05-04
    php 错误处理
  • MySql中sql语句执行过程是什么
    今天小编给大家分享一下MySql中sql语句执行过程是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。sql语句的执行过程...
    99+
    2023-07-05
  • JavaScript函数的执行过程是什么
    JavaScript函数的执行过程是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JavaScript可以做什么1.可以使网页具有交互性,例如响应用户点击,...
    99+
    2023-06-14
  • js中递归函数的执行过程是什么
    在JavaScript中,递归函数的执行过程如下:1. 当调用递归函数时,程序会首先执行函数体内的代码。2. 在函数体内,如果遇到递...
    99+
    2023-09-15
    js
  • 操作系统多线程:探索程序并行执行的奥秘
    多线程是计算机操作系统中的一种重要技术,它允许多个程序或任务同时运行,从而提高计算机的性能。多线程的原理是将一个程序的不同部分划分为多个独立的线程,这些线程可以同时运行,从而提高程序的执行效率。 多线程的实现方式有多种,最常见的是时间片...
    99+
    2024-02-24
    多线程 程序并行 操作系统 计算机性能
  • 计算机中程序的执行是不是指令执行的一个循环过程
    这篇文章给大家分享的是有关计算机中程序的执行是不是指令执行的一个循环过程的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。是,程序就是一个指令一个指令循环执行的。首先按照程序规定的次序,从内存储器取出当前执行的指令,...
    99+
    2023-06-14
  • PHP程序的执行原理是什么
    这篇文章将为大家详细讲解有关PHP程序的执行原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Ja...
    99+
    2023-06-14
  • python程序的执行原理是什么
    这篇文章将为大家详细讲解有关python程序的执行原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python有哪些常用库python常用的库:1.requesuts;2.scrap...
    99+
    2023-06-14
  • MyBatis的SQL语句执行过程是什么
    这篇文章主要介绍“MyBatis的SQL语句执行过程是什么”,在日常操作中,相信很多人在MyBatis的SQL语句执行过程是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MyBatis的SQL语句执行过程...
    99+
    2023-06-30
  • java switch语句的执行过程是什么
    这篇文章主要介绍“java switch语句的执行过程是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“java switch语句的执行过程是什么”文章能帮助大家解决问题。1、语法switch(常...
    99+
    2023-06-30
  • Java程序的运行过程是什么
    本篇内容主要讲解“Java程序的运行过程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java程序的运行过程是什么”吧!Java程序运行过程运行一个Java程序的步骤编辑源代码xxx.ja...
    99+
    2023-07-05
  • MySQL查询语句的执行过程是什么
    这篇文章主要介绍MySQL查询语句的执行过程是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!首先先简单的将一个查询语句背后MySQL做了什么捋一捋:客户端发送一条查询给服务器。服务器先检查查询缓存,如果命中了缓存...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作