MapReduce切片机制及执行流程[亲测有效]

MapReduce切片机制及执行流程[亲测有效]MapReduce的切片机制 在Map阶段会将读取进来的数据进行逻辑切片进行处理。此切片与HDFS的切块不同,HDFS的切块是将文件按照block块的形式保存起来,mr则是将文件按照切片数进行计算默认

MapReduce切片机制及执行流程

MapReduce的切片机制

在Map阶段会将读取进来的数据进行逻辑切片进行处理。
此切片与HDFS的切块不同,HDFS的切块是将文件按照block块的形式保存起来,mr则是将文件按照切片数进行计算
默认切片大小等于块大小,也就是128m切一片,切片数与MapTask的数量是一致的,MapTask的并行度是由客户端提交Job时的切片数决定的

 

MR的执行流程

MapTask阶段 可以分为五个阶段

Read阶段:MapTask根据用户编写的Reader从中解析出一个key/vaule
Map阶段:将读取到的key/value交给用户编写的 map函数进行处理,然后产生新的key/value
Clooect收集阶段:当数据通过map函数处理过后会调用context.write此函数会将生成的key/value进行分区(调用Partition),
***(partiton可以自定义分区,也可以使用默认的分区器HashPartition,默认的分区器会按照我们设置的reduceTask的数量进行分区
也就是如果只设置了一个reduceTask就只会有一个分区,如果分区数不是1而reduceTask是1的话,不会执行分区
因为MapTask执行分区依据是先判断reduceTask的数量)***
并且写入一个环形缓冲区当中。
Spill阶段:即溢写阶段,当环形缓冲区达到80%后会对数据进行溢写,此时会对产生的小文件内部进行一次快排保证每个小文件的内部是有序的,
并在必要时对数据进行合并等操作。
Combine阶段:当所有的数据全都溢写到磁盘后会按照分区对每个分区内的所有小文件进行一次归并排序来形成一个大文件

 

shuffle阶段

从Map端开始对解析后的key/value进行分区到Reduce端对分区文件进行合并(归并排序)的过程叫做 shuffle。
shuffle的过程总共经过三次排序:
第一次排序是在Map端的环形缓冲区向磁盘刷写内容时,对小文件内的内容进行排序。
第二次排序是在Map端对环形缓冲区刷写出来的所有小文件进行合并,为归并排序。
第三次排序是在Reduce段按照分区对分区内文件进行合并,为归并排序。

 

Reduce和Combiner

combiner是MR程序中Mapper和Reducer之外的一种组件。
combiner组件的父类就是Reducer
combiner和reducer的区别在于运行的位置:
conbiner:conbiner是在每一个MapTask所在的节点进行运行,用于局部合并
Reducer:reducer是接收全局所有Mapper的输出结果,用于全局合并
combiner的意义就是对每一个maptask的输出进行局部汇总,以减小网络传输量。
并非所有的mr程序都可以使用combiner。combiner能够应用的前提是不能影响最终的业务逻辑,而且,combiner的输出kv应该跟reducer的输入kv类型要对应起来。

原文地址:https://www.cnblogs.com/MMarshall/archive/2022/03/04/15962598.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5465.html

(0)
上一篇 2023-05-08
下一篇 2023-05-08

相关推荐

  • mysql修改表的编码格式是什么_excel修改编码格式为UTF8

    mysql修改表的编码格式是什么_excel修改编码格式为UTF8在工作中发现的问题,在mysql库中,如果两个表的编码格式不同,会导致索引失效, 比如:表A的编码格式是utf8,但是表B的编码格式是utf8mb4,就会导致两张表联表查询时非常缓慢。所以需要修改已…

    2023-02-10
    144
  • SQL Server中GETDATE转换时间时注意事项

    SQL Server中GETDATE转换时间时注意事项在SQL Server中,有时候查询数据时,需要限定查询时间范围。此时需要对时间进行运算, 如下所示: USE AdventureWorks2014;GOSELECT *FROM HumanResou

    2023-02-10
    146
  • Python安装Matplotlib库

    Python安装Matplotlib库Matplotlib是Python的一个数据可视化库,它提供了多种绘图方式,可以绘制出高质量的图表、图形,非常适合数据分析、研究和科学计算等领域。Matplotlib的安装比较简单,只需要使用pip命令即可安装。

    2024-07-02
    44
  • 用Python的List Comprehension提高代码效率

    用Python的List Comprehension提高代码效率List Comprehension是Python中的一种语法特性,它可以让我们使用简单而又优雅的方式来创建列表。

    2024-07-02
    74
  • Python Run Environment搭建指南

    Python Run Environment搭建指南Python作为一种强大的编程语言,其版本选择非常重要。目前,Python有两个主要版本:Python 2和Python 3。如果您不确定选择哪个版本,请根据您的需求选择。如果您需要使用一些旧版本库或软件,您需要选择Python 2。否则,您应该选择Python 3。

    2024-03-08
    84
  • 提升Python技能:打造高效自动化工作流程

    提升Python技能:打造高效自动化工作流程在日常工作中,我们可能需要处理的数据量相当大,而且包含的信息种类繁多,比如Excel表格、数据库、甚至是网页上的数据等等。使用Python进行数据处理可以大大提高工作效率。

    2023-12-13
    104
  • mycat搭建[亲测有效]

    mycat搭建[亲测有效]搭建mycat 一、准备工作 1、确保jdk已安装成功,并且jdk版本选用1.7以上版本 2、准备一台新的主机mysql_mycat放到master的前面做代理 mycat ip 192.168.23

    2023-06-13
    140
  • Python嵌套列表简介

    Python嵌套列表简介嵌套列表是Python的一个强大而灵活的数据结构,可以用来存储任意深度的数据,在列表和元组之间提供了一种简明而强大的解决方案。本文将介绍Python中的嵌套列表,包括什么是嵌套列表、如何创建它们、如何访问它们、如何修改它们以及如何使用它们来进行更复杂的计算和操作。

    2024-04-20
    85

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注