MapReduce(林子雨慕课课程)

news2024/11/12 8:23:46

文章目录

      • 7. MapReduce
        • 7.1 MapReduce简介
          • 7.1.1 分布式并行编程
          • 7.1.2 MapReduce模型简介
        • 7.2 MapReduce体系结构
        • 7.3 MapReduce工作流程概述
        • 7.4 Shuffle过程原理
        • 7.5 MapReduce应用程序的执行过程
        • 7.6 WordCount实例分析
        • 7.7 MapReduce的具体应用
        • 7.8 MaReduce编程实践

7. MapReduce

7.1 MapReduce简介

MapReduce是一种分布式并行编程框架

  • 数据处理能力提升的两条路线:
    • 单核CPU到双核到四核到八核
    • 分布式并行编程
7.1.1 分布式并行编程
  • 借助一个集群通过堕胎机器同时并行处理大规模数据集

  • 相关的并行编程框架

    image-20231009205514847

  • 并行编程模型和传统的并行编程框架的区别

    image-20231009205557785

7.1.2 MapReduce模型简介
  • MapReduce包含两大函数:Map和Reduce

  • MapReduce策略:

    • 采用分而治之的做法

      image-20231009210538798

  • MapReduce理念

    • 计算向数据靠拢,而不是数据向计算靠拢

      • 什么事数据向计算靠拢?

        • 即完成一次数据分析时,选择一个计算节点,把运行数据分析的程序放在计算节点上运行

        • 然后把它所涉及的数据,全部从各个不同的节点上面拉过来,传输到计算发生的地方

          image-20231009210900265

        • MapReduce采用计算向数据靠拢的方式

          • 即会寻找离这个数据节点最近的Map机器做这个机器上的数据分析
          • 通常Map机器和数据在同一个台机器上,从而大大减少网络中的数据传输靠开销

          image-20231009210940626

        • MapReduce架构:Master/Slave的架构

          image-20231009211251047

  • Map函数和Reduce函数

    • Map函数

      image-20231009211604380

    • Reduce函数

      image-20231009211642551

7.2 MapReduce体系结构
  • MapReduce体系结构

    image-20231010142625214

    • Client(客户端)

      • 通过client可以提交用户编写的应用程序,用户通过它将应用程序交给JobTracker端
      • 通过这些Client用户也可以通过它提供一些接口去查看当前提交作业的运行状态
    • JobTracker(作业跟踪器)

      • 负责资源的监控和作业的调度
      • 监控底层的其他的TaskTracker以及当前运行的Job的健康状况
      • 一旦探测到失败的情况就把这个任务转移到其他节点继续执行跟踪任务执行进度和资源使用量
    • TaskTracker(任务调度器)

      • 执行具体的相关任务一般接受JobTracker发送过来的命令

      • 把一些自己的资源使用情况,以及任务的运行进度通过心跳的方式,也就是heartbeat发送给JobTracker

      • 使用slot概念,将自己机器的cpu、内存资源等分为slot

        • 两种类型的slot不互相通用,map类型的slot不能用了reduce任务,这是1.0的缺陷

        image-20231010143745532

        • Task任务也有两种:map任务和reduce任务

          image-20231010144204698

7.3 MapReduce工作流程概述
  • MapReduce工作流程

    • 将数据分片处理,利用map进行输入(key,value)类型,然后通过Reduce任务输出(key,value)类型到HDFS
    • 将map的结果进行排序、归并、合并(shuffle),结束后将结果分发给相应的Reduce处理
    • 注意不同map任务之间不进行通信,不同Reduce任务之间也不会进行信息交换

    image-20231010144401804

  • MapReduce执行的各个阶段

    • 数据通过InputFormat从HDFS读取文件,并对输入进行格式验证
    • 将大数据集切分成多个split分片,不是物理上的切分,只是逻辑上的切分
    • Record Reader(RR):记录阅读器,根据分片的距离位置信息,从HDFS的各块将数据分片的信息读出,输出为(key,value)形式,作为map的输入
    • Map:用户撰写的处理逻辑,生成一系列的(key,value)的中间结果
    • 通过shuffle(分区,排序,合并)过程,将相关的键值对分发给相应的Reduce任务处理
    • 编写Reduce处理逻辑,任务结束后,分析结果以(key,value)形式显示
    • outoutformat检查输出格式,写入HDFS系统

    image-20231010145644615

  • 分片的具体过程

    • 一个大文件在HDFS中可能由多个块组成,如下图例子在物理上被分为6块,但在逻辑上通过split分块四块内容

    • 每个分片都是一个map任务,如果分片过少,影响并行效率;若分片过多,map切换耗费相关管理资源,影响执行效率

    • 一般来说会将一个块的大小作为HDFS的分片大小,因为假如block1和block2不在一个机器上面,block1运行split1的map任务,此时

      需要将数据从block2机器存到block1所在的机器,会出现额外的数据开销

    image-20231010150518334

  • Reduce任务的数量

    • 最优的Reduce任务个数取决于集群中可用的Reduce任务槽(slot)的数目
    • 通常设置比reduce任务槽数目稍微小一些的Reduce任务个数(这样可以预留一些系统资源处理可能发生的错误)
7.4 Shuffle过程原理
  • Shuffle过程简介

    • HDFS输入数据,分片操作,每个分片都启动一个Map任务,Map任务中包含对用户的处理逻辑
    • Map输出结果(键值对),输出到缓冲区,若缓冲区满了,则发生溢写
    • 溢写过程:将缓存区的数据(经过分区排序合并处理之后)写到磁盘,同时清空缓冲区
    • 溢写发生多次,生成多个磁盘文件,要对这些磁盘文件做统一归并
    • 归并完成后,通知Reduce任务来取走磁盘分区内的数据
    • 取走后,Reduce任务要执行归并、合并操作,将合并后的数据传递给Reduce函数
    • 最后输出到相应的HDFS文件系统

    image-20231010151526843

  • Shuffle过程分类

    image-20231010152335230

    • Map端的Shuffle过程

      • 每个Map任务都会给其分配相应的缓存,一般来说是100M

      • 如果缓存满了再启动溢写,可能会导致后来Map生成的值无法写入缓冲区,丢失值。

        因此,在溢写的时候会设置一个溢写比例,例如80%,即如果写出内容占缓存比例的80%的时候启动溢写,剩余20M空间可以供给给后来生成的map

      • 溢写的分区操作,主要是利用分区分给不同的Reduce任务,排序操作内部会自动完成,合并操作不是必须的,若用户定义合并操作,则会启动合并操作,如(a,1)(a,1)会被合并为(a,2)

      image-20231010152430227

    • Reduce端的Shuffle过程

      • 向JobTracker询问自己所需要的数据是否能够可以取出,JobTracker监测Map任务,若是任务完成了,就通知Reduce任务将任务取走
      • Reduce从Map机器上将任务拉去到本地,Map任务生成的键值对是从不同的Map机器上拉去的,可以继续做归并操作
      • 注意这个归并操作不同于合并,合并是将(a,1)(a,1)合并为(a,2)这种形式,归并是将多个Map中的(a,1)合并为<a,<1,1,1>>
      • 所以若Map过程没有合并操作,得到的就是<a,<1,1,1>>形式数据,归并之后若是用户定义了合并操作,会将其合并为<a,3>形式数据

      image-20231010153733511

7.5 MapReduce应用程序的执行过程
  • 整个执行过程

      1. 程序部署:将程序分发到不同机器上

        image-20231010155447512

      1. 分配Worker执行Map任务和Reduce任务

        image-20231010155602979

      1. 选择空闲Worker机器进行分片,然后读取数据,分给不同的Worker执行Map任务,生成(key,value)键值对,输出结果先写到缓存

        image-20231010155717758

      1. 缓存满了会将数据写到本地

        image-20231010160031305

      1. Reduce机器将数据拉回到本地处理

        image-20231010160111165

      1. 将相关的结果写到输出文件中去

        image-20231010160145754

7.6 WordCount实例分析
  • WordCount程序任务:满足MapReduce分而治之的要求

    image-20231010160320294

  • 一个WordCount执行过程的实例

    image-20231010160518357

    • 假设用户没有定义合并(combine)操作,shuffle操作之后生成的是(key,value-list)形式

      image-20231010160928150

    • 假如用户定义了Combine操作:

      image-20231010161124809

7.7 MapReduce的具体应用
  • 相关应用

    image-20231010161217643

  • 举例:MapReduce实现关系的自然连接

    image-20231010161310395

    • 用Map实现自然连接的过程:原理

      image-20231010161527441

    • 具体过程

      image-20231010161717488

7.8 MaReduce编程实践

见:[MapReduce编程实践(Hadoop3.3.5)_厦大数据库实验室博客 (xmu.edu.cn)](

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

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

相关文章

案例研究|DataEase助力无锡布勒业务数据可视化建设

布勒集团是一家来自瑞士的家族企业&#xff0c;在谷物与食品以及先进材料制造等领域深耕超过160年。布勒大中华区的总部位于江苏无锡。无锡布勒是一家集研发、生产、销售于一体的综合性公司&#xff0c;拥有先进的生产设备及高素质的科技研发人员&#xff0c;以谷物深加工、谷物…

代码随想录第41天 | 123.买卖股票的最佳时机III ● 188.买卖股票的最佳时机IV

123.买卖股票的最佳时机III /*** param {number[]} prices* return {number}*/ var maxProfit function (prices) {const len prices.lengthconst dp new Array(len).fill(0).map(x > new Array(5).fill(0));// 第一天买入&#xff08;第一次买入&#xff09;dp[0][1] …

c 语言基础题目:PTA L1-033 出生年

以上是新浪微博中一奇葩贴&#xff1a;“我出生于1988年&#xff0c;直到25岁才遇到4个数字都不相同的年份。”也就是说&#xff0c;直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求&#xff0c;自动填充“我出生于y年&#xff0c;直到x岁才遇到n个数字都不相同的…

Jetson Orin NX 开发指南(2): 基本环境配置

本文主要是在 Jetson Orin NX 系统烧录和组件安装完成后&#xff0c;对系统进行一些基本的配置&#xff0c;需要注意的是这里的系统其实也是 ubuntu 系统&#xff0c;并且由于选择的是 &#xff0c;其对应的是 ubuntu 20.04 系统&#xff0c;接下来我将介绍一些基本的配置。 一…

【动态规划】是泰波那契数,不是斐波那契数

Problem: 1137. 第 N 个泰波那契数 文章目录 题目解读解题方法dp动态规划迭代优化✔ 复杂度Code 题目解读 首先我们来解读一下本题的意思&#x1f50d; 相信读者在看到【泰波那契数】的时候&#xff0c;不禁会联想到【斐波那契数】&#xff0c;它们呢是一对孪生兄弟&#xff0c…

【d2l动手学深度学习】 Lesson 10 多层感知机 + 代码实现 试验结果对比

文章目录 1. 介绍2. 单层Softmax回归2.1 手写Softmax训练效果 2.2 调用pytorch内置的softmax回归层实现调用pytorch内置softmax实验结果总结 3. 一层感知机&#xff08;MLP&#xff09; Softmax实验结果 Reference写在最后 1. 介绍 在第十节课 多层感知机 的代码实现部分&…

前后端分离项目-基于springboot+vue的足球青训俱乐部管理后台系统的设计与实现(内含代码+文档+报告)

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…

4个不限字数的AI智能写作网站,用好任意一个就可以了

我们都在互联网上写过内容&#xff0c;有的人写社交媒体帖子、电子邮件或文本&#xff0c;有的人为我们的网站、产品描述、视频内容、广告甚至客户支持撰写内容。最近&#xff0c;*******推出了友好的类似聊天机器人的界面&#xff0c;使得AI写作更加容易访问&#xff0c;并迅速…

JVM上篇之类加载子系统

目录 类加载子系统 内存结构 类的生命周期 类的加载过程 加载 加载class文件方式 连接 验证 验证阶段 准备 解析 初始化 类加载器 介绍 作用 分类 引导类加载器 自定义类加载器 ClassLoader 获取ClassLoader途径 双亲委派机制 介绍 执行流程 好处 打破…

01-RocketMQ整体理解与快速实战

上一篇&#xff1a;RocketMQ从入门到精通汇总 一、MQ介绍 1、什么是MQ&#xff1f;为什么要用MQ&#xff1f; MQ&#xff1a;MessageQueue&#xff0c;消息队列。 队列&#xff0c;是一种FIFO 先进先出的数据结构。消息由生产者发送到MQ进行排队&#xff0c;然后按原来的顺序…

解决 Centos 安装 Python 3.10 的报错: Could not import runpy module

操作环境&#xff1a;CentOS 7、Gcc 4.8.5、Python 3.10.0 系统上已经有 2.x&#xff0c;3.6 版本的 Python 了&#xff0c;但是还是想装一个 3.10 的。因为刚写的脚本文件是较高版本的&#xff0c;在 3.6 上无法正常运行&#xff0c;Python 语法不是很了解&#xff0c;只能从…

[每周一更]-(第66期):Docker 守护进程说明

Docker 的优势 Build once, Run anywhere 上面这句话很精辟的总结了 docker 的优点。我从下面几点具体描述 docker 带给开发者的能力 应用标准化 无论什么语言开发的应用&#xff0c;我们都能用 dockerfile 和构建脚本方便的进行应用构建打包&#xff0c;代码库 构建 regis…

华为交换机vlan划分、telnet 管理地址配置

------1--- 1台核心交换时s5700 2台汇聚交换机S3700 6台PC -----2------ 创建vlan 10 20 30 s3700下PC1,PC2,PC3 S3700下PC4,PC5,PC6 VLAN10 PC1,PC2 VLAN20 PC3,PC4 VLAN30 PC5,PC6 -------3----- 要求实现&#xff1a; PC1,PC2互通&#xff1b; PC3,PC4互通&#xff1b; P…

【吞噬星空4】徐欣因祸得福,罗峰强势复仇,两大强者被杀,阿特金已开始自救

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析吞噬星空国漫。 吞噬星空第89集预告已经出来了&#xff0c;从预告来看&#xff0c;信息量是真的多。从徐欣因祸得福到罗峰强势复仇&#xff0c;再到两大强者被杀&#xff0c;乃至于最后的阿特金已开始自救。那么多的不说&…

3分钟轻松实现网关网口远程监控安川PLC

EG网关网口连接安川PLC 目录 EG网关网口连接安川PLC 一. 准备工作 1.1 在对接前我们需准备如下物品 1.2 EG20网关准备工作 1.3 PLC准备工作 1.4 添加MEMOBUS协议 二. EMCP平台设置 2.1 新增EG设备 2.2 远程配置网关 2.3 网关绑定 2.4 通讯参数设置 2.5 创建设备驱动…

以单颗CMOS摄像头重构三维场景,维悟光子发布单目红外3D成像模组

维悟光子近期发布全新单目红外3D成像模组,现可提供下游用户进行测试导入。通过结合微纳光学元件编码和人工智能算法解码,维悟光子单目红外3D成像模组采用单颗摄像头,通过单帧拍摄,可同时获取像素级配准的3D点云和红外图像信息,可被应用于机器人、生物识别等广阔领域。 市场…

vxe是一款功能强大的table,有vue2/3版本

vxe-table v4https://vxetable.cn/#/table/start/install 当计算上千&#xff0c;上万条数据的和&#xff0c;或者算数平方根时可以使用web worker&#xff0c;来实现复杂&#xff0c;大量的计算&#xff0c;同时也不会造成浏览器的卡顿&#xff0c;暂时只是知道&#xff0c;还…

rxjava2源码分析

目录 一&#xff0c;Observable调用流程 1.1 简单Observable.create()创建调用流程 1.2 map操作符 1.3 flatmap操作符 1.4 subscribeOn操作符 1.5 observeOn操作符 一&#xff0c;Observable调用流程 1.1 简单Observable.create()创建调用流程 上面的这个流程图是下面这…

河北吉力宝搭建中国鞋业全产业链生态流通体系

中国鞋业&#xff0c;一直以来都是劳动密集型产业的代表&#xff0c;传统的制造和销售方式已经不能满足当今市场的需求。在这个充满机遇和挑战的时代&#xff0c;河北吉力宝旗下的品牌步力宝&#xff0c;以鞋为媒介&#xff0c;积极参与商业创新&#xff0c;正引领中国鞋业向前…

idea提交git项目,提交代码 点击commit一闪而过,没有反应的解决办法

idea提交git项目&#xff0c;提交代码 点击commit一闪而过&#xff0c;没有反应的解决办法 一般有两种情况导致一闪而过&#xff0c;一种为git设置问题&#xff0c;一种是编码问题&#xff0c;解决方案如下&#xff1a; 1、在单文件提交时不会遇到这种情况&#xff0c;但是在…