【大数据之Hadoop】十一、MapReduce之Shuffle、MapTask、ReduceTask工作机制

news2024/11/25 14:08:24

1 Shuffle机制

在这里插入图片描述
对于排序而言分为两个阶段,MapTask后和ReduceTask前。

2 MapTask工作机制

在这里插入图片描述
MapTask并行度由切片个数决定;切片个数由切片大小(切片大小取决于块大小、maxsize(Long的最大值)和minsize(默认为1))以及数据读取方式决定。
在这里插入图片描述
(1)Read阶段:
job的提交流程:待读写的源数据由客户端进行切片划分,划分完成之后提交(切片信息、jar包、xml配置文件)给yarn,yarn开启MrAppMaster。

MrAppMaster启动后正式开启MapTask,由InputFormat读取数据(默认使用TextInputFormat)调用RecorderReader的reader()读取数据,数据格式:(k,v)=(偏移量,数据的一行内容)。

读取之后将数据返回给Mapper,进入Map阶段。

(2)Map阶段:
主要是将解析出的key/value交给用户编写map()函数处理,并产生一系列新的key/value。

(3)Collect收集阶段:
在用户编写map()函数中,当数据处理完成后,一般会调用OutputCollector.collect()输出结果。

在该函数内部,它会将生成的key/value分区(调用Partitioner),并写入一个环形内存缓冲区中。

缓冲区内部的数据全部都是按照分区的方式进行存储,且一侧存数据,一侧存索引,当数据达到80%时进行反向溢写。溢写之前需要对分区中的数据进行排序

(4)Spill溢写阶段:
当环形缓冲区满后,产生大量的溢写文件,MapReduce会将数据写到本地磁盘上,生成一个临时文件。

将数据写入本地磁盘之前,先要对数据进行一次本地排序,并在必要时对数据进行合并、压缩等操作。

(5)Merge阶段:
当所有数据处理完成后(即溢写完成后),MapTask所有临时文件(溢写文件)进行一次归并排序,以确保最终只会生成一个数据文件。
在这里插入图片描述
MapTask后的阶段:
MapTask把处理结果暂时放到环形缓冲区,当环形缓冲区的使用率达到一定阈值(80%)时,对其进行一次快速排序,然后将有序数据写到磁盘上。
当数据处理完后,磁盘上的所有文件再进行一次快速排序。

3 ReduceTask工作机制

在这里插入图片描述
前提:MapTask将数据处理完毕且持久化在磁盘上,等待ReduceTask端拉取数据。
(1)Copy阶段:
ReduceTask从各个MapTask上远程拷贝一片数据(即拉取指定分区的数据),并针对某一片数据,如果其大小超过一定阈值,则写到磁盘上,否则直接放到内存中。
(2)Sort阶段:
对拉取的文件进行归并排序。
在远程拷贝数据的同时,ReduceTask启动了两个后台线程对内存和磁盘上的文件进行合并,以防止内存使用过多或磁盘上文件过多。按照MapReduce语义,用户编写reduce()函数输入数据是按key进行聚集的一组数据。为了将key相同的数据聚在一起,Hadoop采用了基于排序的策略。由于各个MapTask已经实现对自己的处理结果进行了局部排序,因此,ReduceTask只需对所有数据进行一次归并排序即可。
(3)Reduce阶段:
对于相同的key的数据进入到同一个reduce()处理函数,将计算**结果通过OutputFormat(输出)**写到HDFS上。
在这里插入图片描述
ReduceTask前的阶段:
ReduceTask从每个MapTask上拉取数据存储在内存上,如果文件太大则溢出写道磁盘。

如果磁盘上的文件数目达到一定阈值时,则进行一次归并排序,生成更大的文件。

如果内存中文件大小或者数目达到一定阈值时,也进行一次合并排序后写到磁盘上。

当所有数据拉取完毕后,ReduceTask统一对内存和磁盘上的所有数据进行一次归并排序。

ReduceTask并行度决定机制
ReduceTask并行度一般通过实验得出,实验结果的总时间是服从正态分布的,具体多少个ReduceTask需要根据集群性能而定。

(1)ReduceTask=0,表示没有Reduce阶段,输出文件个数=Map个数。
(2)ReduceTask默认值=1,即输出文件为1个。
(3)当数据分布不均时,可能在Reduce阶段产生数据倾斜。
(4)ReduceTask个数需要根据业务逻辑需求设定。如计算全局汇总只能设置1个ReduceTask。
(5)当分区数不等于1,ReduceTask=1时不执行分区过程。原因:在MapTask源码中,执行分区前需要判断ReduceTask是否大于1,只有大于1时才执行分区。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/418383.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【华为机试真题详解JAVA实现】—字符串通配符

目录 一、题目描述 二、解题代码 一、题目描述 问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。 要求: 实现如下2个通配符: *:匹配0个或以上的字符(注:能被*和?匹配的字符仅由英文字母和…

为一副通用纸牌设计数据结构

为一副通用纸牌设计数据结构 大家好,我是易安,今天我们来聊一道笔试题,这也是我曾经面试华为时做过的题,今天分享给大家。 题目: 如何设计一个通用的扑克牌数据结构?请解释如何继承它来实现特定的扑克游戏…

wps 不显示公式_当Excel中使用函数不显示结果只显示公式时,该怎么解决呢?

在使用Excel过程中,有时候Excel中使用函数后,不显示结果只显示公式。 如下面使用vlookup函数时,只显示公式不显示结果。 遇到这种情况我们该怎么处理呢? 接下来,介绍几种造成该情况的原因以及相对应的解决方法。 1.如果…

BarTender.Application COM 多次调用引发后台进程数不断增加的问题

引用文章方法测试,目前未发现问题. Closing Instance Of Bartender – BarTender Support Portal (seagullscientific.com) Closing Instance Of Bartender FollowFollowed by one person Legacy Poster 9 years ago Hello again, Ive got BarTender automating…

LLM:Vicuna 7B模型简单部署体验

0、引入1、保存权重文件到阿里云盘2、部署环境3、上传权重文件到30904、下载安装源码4.1 下载编译安装源码4.2 安装5、开始使用6、直接使用我的镜像立即开启人机对话Debug:可能的报错0、引入 随着ChatGPT的火热,科技公司们各显神通,针对大语…

设计模式之中介者模式(C++)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、中介者模式是什么? 中介者模式是一种行为型的软件设计模式,也称为仲裁者模式,顾名思义&am…

nginx--基本配置

目录 1.安装目录 2.文件详解 2.编译参数 3.Nginx基本配置语法 1./etc/nginx/nginx.conf 2./etc/nginx/conf.d/default.conf 3.启动重启命令 4.设置404跳转页面 1./etc/nginx/conf.d/default.conf修改 ​2. 重启 5.最前面内容模块 6.事件模块 1.安装目录 # etc cd …

排序-时间复杂度

技巧:先处理 内层 一次排序,在处理外面 直接插入排序 升序 最坏(遇到降序):O(N^2) 等差数列 123…(n-1) (n^2-n)/2 最好(有序) O(N) 希尔排序 gap 任何数字/2都是1 gap/3 1 保证gap最后是1 gap是多少 就分了多少组,每组数据可能少一点&…

根文件系统移植:bulidroot根文件系统搭建详细步骤

bulidroot根文件系统 文章目录bulidroot根文件系统1.buildroot 下载2 配置 buildroot1、配置 Target options2、配置 Toolchain3、 配置 System configuration4、配置 Filesystem images5、 禁止编译 Linux 内核和 uboot6、配置 Target packages3 编译 buildroot4 buildroot 根…

第一章 计算机网络概述

计算机网络基本概念 计算机网络是计算机技术与通信技术相互融合的产物计算机网络是互连的、自治的计算机的集合 自治——互连的计算机系统彼此独立,不存在主从或者控制与被控制关系互连——利用通信链路连接相互独立的计算机系统 目前最大的、应用最广泛的计算机网…

函数栈帧的创建和销毁(带你进一步深入理解函数的执行流程)

本文主题 什么是函数栈帧? 理解函数栈帧能解决什么问题? 函数栈帧的创建和销毁解析 1. 什么是函数栈帧 ? 我们在写C语言代码的时候,经常会把一个独立的功能抽象为函数,所以C程序是以函数为基本单位的。 那函数是如何…

人人都是数据分析师-数据分析之数据图表可视化(上)

BI报表、运营同学的汇报报告中数据图表大多为 表格、折线图、柱状图和饼图,但是实际上还有很多具有代表性的可视化图表,因此将对常见的可视化图表进行介绍,希望这些图表可视化方法能够更好的提供数据的可用性。 导语 数据是我们在数据分析工…

通过1个IP地址同时采集2台西门子S7200 Smart的数据

一、应用场景 制药厂的颗粒包装机,控制系统由2台西门子S7200 Smart的PLC和1台昆仑通泰MCGS的触摸屏组成。现在MES管理系统,需要采集设备的数据,只提供一个IP地址,且IP地址和原系统不在同一个网络段内。 二、原系统架构 2台西门子S…

浅析DNS Rebinding

0x01 攻击简介 DNS Rebinding也叫做DNS重绑定攻击或者DNS重定向攻击。在这种攻击中,恶意网页会导致访问者运行客户端脚本,攻击网络上其他地方的计算机。 在介绍DNS Rebinding攻击机制之前我们先了解一下Web同源策略, Web同源策略 同源策略…

智慧校园人员定位系统解决方案

人员定位是安全管理中最重要的一个环节,尤其是石化、矿业、电力、建筑等高危行业,人员安全管理更是重中之重,除了工业领域,其它领域也需要人员安全管理,比如:学校、医院、养老院、物业、环卫等。下面我们以…

SpringSecurity之基本原理——过滤器加载过程

前言 前一篇讲解了SpringSecurity的过滤器链的基本只是,今天我们就要进入过滤器,看看其加载过程是如何的? 相信认真度过第一篇文章的小伙伴还记得,我说在SpringBoot出现后,帮助我们省去了那些繁琐的配置,…

2023年MathorCup数模A题赛题

A 题 量子计算机在信用评分卡组合优化中的应用 在银行信用卡或相关的贷款等业务中,对客户授信之前,需要先通过 各种审核规则对客户的信用等级进行评定,通过评定后的客户才能获得信 用或贷款资格。规则审核过程实际是经过一重或者多重组合规则…

树的直径问题

一,定义 树的直径就树中所有最短路经距离的最大值 求取树的直径可以使用两遍dfs或者树形dp获得 二,两遍dfs获得树的直径(注意,该方法边权必须都为正边权) 思路: 我们首先任取一点走dfs,然后…

索引:索引知识重复习,什么是索引、索引的类型、建立索引及【最左匹配原则】、Explain查看sql的执行计划

文章目录什么是索引索引的类型主键索引(primary key)普通索引(index)复合索引全文索引(fulltext)空间索引唯一索引索引修改及删除Explain一、using filesort(减慢查询效率)二、Using temporary三、using in…

TensorFlow 1.x学习(系列二 :3):变量与tensorboard可视化

文章目录1.变量2.可视化学习 Tensorboard3.可视化过程中遇到的问题:import tensorflow as tf1.变量 变量op: 变量也是一种OP,是一种特殊的张量,能够进行存储持久化,它的值就是张量,默认被训练和常量不同(…