我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

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

Java中jvm的执行过程是什么

这期内容当中小编将会给大家带来有关Java中jvm的执行过程是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2.
2023-06-14

MySQL中order by的执行过程是什么

本文小编为大家详细介绍“MySQL中order by的执行过程是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL中order by的执行过程是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一 、
2023-06-30

mysql中查询的执行过程是什么

今天就跟大家聊聊有关mysql中查询的执行过程是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、过程客户端向MySQL服务器发送一条查询请求;服务器首先检查查询缓存,如果命中缓
2023-06-15

java中switch语句的执行过程是什么

今天就跟大家聊聊有关java中switch语句的执行过程是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编
2023-06-14

js中递归函数的执行过程是什么

在JavaScript中,递归函数的执行过程如下:1. 当调用递归函数时,程序会首先执行函数体内的代码。2. 在函数体内,如果遇到递归调用,程序会暂停当前函数的执行,并开始执行递归函数。3. 递归函数会重复步骤1和步骤2,直到满足某个条件时
2023-09-15

计算机网络中源程序、目标程序、可执行程序的含义是什么

这篇文章给大家分享的是有关计算机网络中源程序、目标程序、可执行程序的含义是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。源程序:指未编译的,按照一定的程序设计语言规范书写的文本文件。目标程序:指源程序经编译可
2023-06-14

java方法调用在内存中的执行过程是什么

这篇“java方法调用在内存中的执行过程是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java方法调用在内存中的执行过
2023-07-02

为什么Vista中所有的.exe可执行程序都无法运行

本篇内容介绍了“为什么Vista中所有的.exe可执行程序都无法运行”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前几天,论坛有用户反映Vi
2023-06-14

计算机中一个c程序的执行是从什么函数开始

小编给大家分享一下计算机中一个c程序的执行是从什么函数开始,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一个c程序的执行是从本程序的main函数开始,到main函
2023-06-14

Linux操作系统中Shell程序设计是什么样的

这篇文章将为大家详细讲解有关Linux操作系统中Shell程序设计是什么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Shell是种命令解释程序,也可以看作是一种命令语言的解释器。 用户
2023-06-05

在没有BIND的情况下,程序中进行非SQL更改时,执行结果是什么?

问题:COBOL-DB2 程序已更改,以将变量的长度从 PIC X(5) 增加到 PIC X(8)。但是,程序的 SQL 没有任何变化。如果程序的计划/包没有针对这些更改进行绑定,结果会怎样?解决方案从 PIC X(5) 到 PIC X(8
2023-10-22

制定合理的学习计划,顺利通过软考中级系统集成项目管理工程师考试!(系统集成项目管理工程师考试备考计划制定与执行)

制定合理的学习计划是通过软考中级系统集成项目管理工程师考试的关键。首先要了解考试大纲和教材,明确考试范围。制定时间表和学习计划,确保每天或每周固定学习时间。专注和有效学习,理解知识点之间的联系,及时复习巩固记忆。多做题和模拟考试,掌握题型和答题技巧。查漏补缺,定期检测发现盲点,查阅资料补充完善知识。保持自信,劳逸结合,寻求支持,缓解压力。临考前提前熟悉考场,做好考前准备,保持冷静和专注,从容答题。
制定合理的学习计划,顺利通过软考中级系统集成项目管理工程师考试!(系统集成项目管理工程师考试备考计划制定与执行)
2024-04-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录