大数据基础:Hadoop之MapReduce重点架构原理

文章目录
Hadoop之MapReduce重点架构原理
一、MapReduce概念
二、MapReduce 编程思想
2.1、Map阶段
2.2、Reduce阶段
三、MapReduce处理数据流程
四、MapReduce Shuffle
五、MapReduce注意点
六、MapReduce的三次排序
Hadoop之MapReduce重点架构原理
一、MapReduce概念
MapReduce是Hadoop生态中的计算框架,用于大规模数据集的并行计算。
二、MapReduce 编程思想
2.1、Map阶段
在Map阶段中,输入数据被分割成若干个独立的块,并由多个Mapper任务并行处理,每个Mapper任务都会执行用户定义的map函数,将输入数据转换成一系列键-值对的形式(Key-Value Pairs),这些键-值对被中间存储,以供Reduce阶段使用。
Map阶段主要是对数据进行映射变换,读取一条数据可以返回一条或者多条K,V格式数据。
2.2、Reduce阶段
在Reduce阶段中,所有具有相同键的键-值对会被分配到同一个Reducer任务上,Reducer任务会执行用户定义的reduce函数,对相同键的值进行聚合、汇总或其他操作,生成最终的输出结果,Reduce阶段也可以由多个Reduce Task并行执行。
Reduce阶段主要对相同key的数据进行聚合,最终对相同key的数据生成一个结果,最终写出到磁盘文件中。
三、MapReduce处理数据流程
-
首先MapReduce会将处理的数据集划分成多个split,split划分是逻辑上进行划分,而非物理上的切分,每个split默认与Block块大小相同,每个split由1个map task进行处理。
-
map task以行为单位读取split中的数据,将数据转换成K,V格式数据,根据Key计算出本条数据应该写出的分区号,最终在内部得到(K,V,P)格式数据写入到当前map task 所在的物理节点磁盘,便于后续reduce task的处理。
-
为了避免每条数据都产生一次IO,MapReduce 引入了“环形缓冲区”内存数据结构,默认大小100M。先将处理好的每条数据写入到“环形缓冲区”,当环形缓冲区使用达到80%时,会将数据溢写到磁盘文件。根据split大小不同,可能会发生多次溢写磁盘过程。
-
每次溢写磁盘时会对数据进行二次排序:按照数据(K,V,P)中的P(分区)进行排序并在每个P(分区)中按照K进行排序,这样能保证相同的分区数据放在一起并能保证每个分区内的数据按照key有序。
-
最终多次溢写的磁盘文件数据会根据归并排序算法合并成一个完整的磁盘文件,此刻,该磁盘文件特点是分区有序且分区内部数据按照key有序。
-
Reduce端每个Reduce task会从每个map task所在的节点上拉取落地的磁盘文件对应的分区数据,对于每个Reduce task来说,从各个节点上拉取到多个分区数据后,每个分区内的数据按照key分组有序,但是总体来看这些分区文件中key数据不是全局有序状态(分区数据内部有序,外部无序)。
-
每个Reduce task需要再通过一次归并排序进行数据merge,将每个分区内的数据变成分区内按照key有序状态,然后通过Reduce task处理将结果写出到HDFS磁盘。
四、MapReduce Shuffle
-
分区(Partitioning):根据键值对的键,将中间键值对划分到不同的分区。每个分区对应一个Reduce任务,这样可以确保相同键的键值对被发送到同一个Reduce任务上进行处理。
-
排序(Sorting):对每个分区内的中间键值对按键进行排序(快排)。通过排序,相同键的键值对会相邻存放,以便后续的合并操作更高效。
-
合并(Merging):对多次溢写的结果按照分区进行归并排序合并溢写文件,每个maptask最终形成一个磁盘一些文件,减少后续Reduce阶段的输入数据量。
-
Combiner(局部合并器):Combiner是一个可选的优化步骤,在Map任务输出结果后、Reduce输入前执行。其作用是对Map任务的输出进行局部合并,将具有相同键的键值对合并为一个,以减少需要传输到Reduce节点的数据量,降低网络开销,并提高整体性能。Combiner实际上是一种轻量级的Reduce操作,用于减少数据在网络传输过程中的负担。需要注意的是,Combiner的执行并不是强制的,而是由开发人员根据具体情况决定是否使用。
-
拷贝(Copying):将各分区内的数据复制到各自对应的Reduce任务节点上,会先向内存缓冲区中存放数据,内存不够再溢写磁盘,当所有数据复制完毕后,Reduce Task统一对内存和磁盘数据进行归并排序并交由Redcue方法并行处理。
五、MapReduce注意点
-
MapReduce Job 中Map Task并行度由split切片决定。
-
Split切片默认与一个block大小相等,block是物理切分,split是逻辑切分,也就是说split大小是通过offset范围来决定每个split大小,而非真正的文件切分。
-
读取数据源时,如果数据源头包括多个文件,会针对每个文件单独进行split切片,而不会考虑数据整体。
六、MapReduce的三次排序
-
第一次排序发生在Map阶段的磁盘溢写时:当MapReduce的环形缓冲区达到溢写阈值时,在数据刷写到磁盘之前,会对数据按照key的字典序进行快速排序,以确保每个分区内的数据有序。
-
第二次排序发生在多个溢写磁盘小文件合并的过程中:经过多次溢写后,Map端会生成多个磁盘文件,这些文件会被合并成一个分区有序且内部数据有序的输出文件,从而确保输出文件整体有序。
-
第三次排序发生在Reduce端:Reduce任务在获取来自多个Map任务输出文件后,进行合并操作并通过归并排序生成每个Reduce Task处理的分区文件整体有序。
- 📢博客主页:https://lansonli.blog.csdn.net
- 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
- 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
- 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
相关文章:
大数据基础:Hadoop之MapReduce重点架构原理
文章目录 Hadoop之MapReduce重点架构原理 一、MapReduce概念 二、MapReduce 编程思想 2.1、Map阶段 2.2、Reduce阶段 三、MapReduce处理数据流程 四、MapReduce Shuffle 五、MapReduce注意点 六、MapReduce的三次排序 Hadoop之MapReduce重点架构原理 一、MapReduce概…...
人工智能算法工程师(中级)课程3-sklearn机器学习之数据处理与代码详解
大家好,我是微学AI,今天给大家分享一下人工智能算法工程师(中级)课程3-sklearn机器学习之数据处理与代码详解。 Sklearn(Scikit-learn)是一个基于Python的开源机器学习库,它提供了简单有效的数据挖掘和数据分析工具。Sklearn包含了…...
华为机考真题 -- 螺旋数字矩阵
题目描述: 疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法:给出数字 个数 n 和行数 m(0 < n ≤ 999,0 < m ≤ 999),从左上角的 1 开始&#x…...
防御笔记第四天(持续更新)
1.状态检测技术 检测数据包是否符合协议的逻辑顺序;检查是否是逻辑上的首包,只有首包才会创建会话表。 状态检测机制可以选择关闭或则开启 [USG6000V1]firewall session link-state tcp ? check Indicate link state check [USG6000V1]firewall ses…...
HUAWEI VRRP 实验
实验要求:在汇聚交换机上SW1和SW2中实施VRRP以保证终端网关的高可靠性(当某一个网关设备失效时,其他网关设备依旧可以实现业务数据的转发。) 1.在SW1和SW2之间配置链路聚合,以提高带宽速度。 2.PC1 访问远端网络8.8.8.8 ,优先走…...
领取serv00免费虚拟主机
参考 教程地址【免费serv00虚拟机SSH登录搭建网站】 领取地址 领到了 SSH登录要魔法,网页登录不用 轻松搭建自己的静态网站 soulio.serv00.net 网页加载速度还可以。 ...
云开发技术的壁纸小程序源码,无需服务期无需域名
1、本款小程序为云开发版本,不需要服务器域名 2、文件内有图文搭建教程,小白也不用担心不会搭建。 3、本程序反应速度极快,拥有用户投稿、积分系统帮助各位老板更多盈利。 4、独家动态壁纸在线下载,给用户更多的选择 5、最新版套图…...
基于Python的哔哩哔哩数据分析系统设计实现过程,技术使用flask、MySQL、echarts,前端使用Layui
背景和意义 随着互联网和数字媒体行业的快速发展,视频网站作为重要的内容传播平台之一,用户量和内容丰富度呈现爆发式增长。本研究旨在设计并实现一种基于Python的哔哩哔哩数据分析系统,采用Flask框架、MySQL数据库以及echarts数据可视化技术…...
顺序结构 ( 四 ) —— 标准数据类型 【互三互三】
序 C语言提供了丰富的数据类型,本节介绍几种基本的数据类型:整型、实型、字符型。它们都是系统定义的简单数据类型,称为标准数据类型。 整型(integer) 在C语言中,整型类型标识符为int。根据整型变量的取值范…...
科普文:jvm笔记
一、JVM概述# 1. JVM内部结构# 跨语言的平台,只要遵循编译出来的字节码的规范,都可以由JVM运行 虚拟机 系统虚拟机 VMvare 程序虚拟机 JVM JVM结构 HotSpot虚拟机 详细结构图 前端编译器是编译为字节码文件 执行引擎中的JIT Compiler编译器是把字节…...
springboot对象参数赋值变化
java springboot 项目, 通过接口修改Person类 name值, 在别的类中,注入Person类 Resource Person person, 为什么拿不到 接口修改的 name的值,是Person类 不同的对象造成的 吗 参数对象和注入对象区别 Person类&…...
树形结构的一种便捷实现方案
背景 在开发过程中经常需要把平铺的数据结构转为树形的数据结构,例如多级菜单、组织机构等。 实现方案有很多种。 1、可以使用递归查询,但是这样数据一多会导致频繁的多次查询数据库,产生很多额外的IO开销,总体的响应时间会比较…...
探索AI数字人的开源解决方案
引言 随着人工智能(AI)技术的迅猛发展,AI数字人(或虚拟人)正逐渐走进我们的生活,从虚拟助手到虚拟主播,再到虚拟客服,AI数字人在各个领域展现出巨大的潜力。开源解决方案的出现&…...
科普文:深入理解负载均衡(四层负载均衡、七层负载均衡)
概叙 网络模型:OSI七层模型、TCP/IP四层模型、现实的五层模型 应用层:对软件提供接口以使程序能使用网络服务,如事务处理程序、文件传送协议和网络管理等。(HTTP、Telnet、FTP、SMTP) 表示层:程序和网络之…...
华为模拟器ensp中USG6000V防火墙web界面使用
防火墙需要配置 新建拓扑选择USG6000V型号 在防火墙中导包 忘记截图了 启动设备 输入用户名密码 默认用户名:admin 默认密码:Admin123 修改密码 然后他会提示你是否要修改密码,想改就改不想改就不改 进入命令行界面 进入系统视图开启web…...
使用Python绘制气泡图
使用Python绘制气泡图 气泡图效果代码 气泡图 气泡图通过气泡的大小表示数据的一个维度,用于展示三个维度的数据。例如,可以展示城市的人口、面积和GDP。 效果 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mjj27sP7-1720…...
政安晨:【Keras机器学习示例演绎】(五十四)—— 使用神经决策森林进行分类
目录 导言 数据集 设置 准备数据 定义数据集元数据 为训练和验证创建 tf_data.Dataset 对象 创建模型输入 输入特征编码 深度神经决策树 深度神经决策森林 实验 1:训练决策树模型 实验 2:训练森林模型 政安晨的个人主页:政安晨 欢…...
洞察消费者心理:Transformer模型在消费者行为分析的创新应用
洞察消费者心理:Transformer模型在消费者行为分析的创新应用 在数字化时代,消费者行为分析对于企业理解市场动态、制定营销策略至关重要。Transformer模型,以其在处理序列数据方面的优势,为消费者行为分析提供了新的视角和工具。…...
如何安全使用代理ip
1、选择可靠的代理服务提供商:选择知名的、信誉良好的代理服务提供商,避免使用免费的代理服务,因为免费的代理服务可能存在安全隐患。 2、使用HTTPS代理:使用HTTPS代理可以加密你的网络流量,保护你的隐私和安全。 3、…...
机器学习——LR、GBDT、SVM、CNN、DNN、RNN、Word2Vec等模型的原理和应用
LR(逻辑回归) 原理: 逻辑回归模型(Logistic Regression, LR)是一种广泛应用于分类问题的统计方法,尤其适用于二分类问题。其核心思想是通过Sigmoid函数将线性回归模型的输出映射到(0,1)区间,从…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
用递归算法解锁「子集」问题 —— LeetCode 78题解析
文章目录 一、题目介绍二、递归思路详解:从决策树开始理解三、解法一:二叉决策树 DFS四、解法二:组合式回溯写法(推荐)五、解法对比 递归算法是编程中一种非常强大且常见的思想,它能够优雅地解决很多复杂的…...
