MapReduce(林子雨慕课课程)

这篇具有很好参考价值的文章主要介绍了MapReduce(林子雨慕课课程)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

7. MapReduce

7.1 MapReduce简介

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

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

  • 相关的并行编程框架

    MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

    MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

  • MapReduce策略:

    • 采用分而治之的做法

      MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

  • MapReduce理念

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

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

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

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

          MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

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

          MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

        • MapReduce架构:Master/Slave的架构

          MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

  • Map函数和Reduce函数

    • Map函数

      MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

    • Reduce函数

      MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

    MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

    • Client(客户端)

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

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

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

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

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

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

        MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

          MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

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

    MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

  • MapReduce执行的各个阶段

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

    MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

  • 分片的具体过程

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

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

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

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

    MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

  • Reduce任务的数量

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

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

    MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

  • Shuffle过程分类

    MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

    • Map端的Shuffle过程

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

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

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

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

      MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

    • 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>形式数据

      MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

    MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

        MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

        MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

        MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

        MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

        MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

        MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

    MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

  • 一个WordCount执行过程的实例

    MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

      MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

      MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

    MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

    MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

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

      MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

    • 具体过程

      MapReduce(林子雨慕课课程),大数据应用,hadoop,mapreduce,大数据

7.8 MaReduce编程实践

见:[MapReduce编程实践(Hadoop3.3.5)_厦大数据库实验室博客 (xmu.edu.cn)](文章来源地址https://www.toymoban.com/news/detail-726572.html

到了这里,关于MapReduce(林子雨慕课课程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hadoop mapreduce课程设计-全球历史平均气温数据分析

    文章目录 前言 一、工具介绍 二、mapreduce数据处理 1.数据集准备  2.要求:对不同洲的平均温度处理--得到各大洲的平均温度 2.1 mapper阶段 2.2 reduce阶段 2.3 分区 2.4 Driver阶段 3.结果展示  4.将数据放入mongodb数据库 4.1 ktr展示 4.2 mongodb数据展示 ​编辑  5.使用pandas和pyecharts将数据

    2024年02月03日
    浏览(50)
  • 第三节 Hadoop学习案例——MapReduce课程设计 好友推荐功能

    提示:文章内容主要以案例为主 目录 前言 项目说明 一,程序需求 1.需求 2.数据 二,编码操作 1.项目建包目录 2.FriendsRecommend.java  3.FriendsRecommendMapper.java 4.FriendsRecommendReduce.java 三,Xshell运行的步骤 1.创建目录 2.上传程序  3.分布式文件系统上传测试数据  4.执行程序 5. 查看结

    2024年02月07日
    浏览(51)
  • Hadoop系统应用之MapReduce相关操作【IDEA版】---经典案例“倒排索引、数据去重、TopN”

      倒排索引是文档检索系统中最常用的数据结构,被广泛应用于全文搜索引擎。倒排索引主要用来存储某个单词(或词组)在一组文档中的存储位置的映射,提供了可以根据内容来查找文档的方式,而不是根据文档来确定内容,因此称为倒排索引(Inverted Index)。带有倒排索引

    2024年02月07日
    浏览(49)
  • 大数据框架之Hadoop:MapReduce(三)MapReduce框架原理——MapTask工作机制

    MapTask工作机制如下图所示。 (1)Read阶段:MapTask通过用户编写的RecordReader,从输入InputSplit中解析出一个个key/value。 (2)Map阶段:该节点主要是将解析出的key/value交给用户编写map()函数处理,并产生一系列新的key/value。 (3)Collect收集阶段:在用户编写map()函数中,当数据处

    2023年04月08日
    浏览(65)
  • 大数据开发之Hadoop(MapReduce)

    MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。 1.2.1 优点 1、MapReduce易于编程 它简单的实现一些

    2024年01月22日
    浏览(47)
  • Hadoop学习:深入解析MapReduce的大数据魔力(三)

    (1)Read阶段:MapTask通过InputFormat获得的RecordReader,从输入InputSplit中解析出一个个key/value。 (2)Map阶段:该节点主要是将解析出的key/value交给用户编写map()函数处理,并产生一系列新的key/value。 (3)Collect 收集阶段:在用户编写 map()函数中,当数据处理完成后,一般会调用

    2024年02月12日
    浏览(39)
  • 【大数据】Hadoop_MapReduce➕实操(附详细代码)

    MapReduce是hadoop的核心组件之一,hadoop要分布式包括两部分,一是分布式文件系统hdfs,一是分布式计算框,就是mapreduce,二者缺一不可,也就是说,可以通过mapreduce很容易在hadoop平台上进行分布式的计算编程 sftp命令:Windows下登录Hadoop102 xftp root@hadoop102 , lcd 切换Windows路径,

    2024年02月01日
    浏览(37)
  • 大数据面试题集锦-Hadoop面试题(三)-MapReduce

    你准备好面试了吗?这里有一些面试中可能会问到的问题以及相对应的答案。如果你需要更多的面试经验和面试题,关注一下\\\"张飞的猪大数据分享\\\"吧,公众号会不定时的分享相关的知识和资料。 目录 1、谈谈Hadoop序列化和反序列化及自定义bean对象实现序列化? 2、FileInputForma

    2024年02月11日
    浏览(56)
  • 大数据技术之Hadoop:MapReduce与Yarn概述(六)

    目录 一、分布式计算 二、分布式资源调度 2.1 什么是分布式资源调度 2.2 yarn的架构 2.2.1 核心架构 2.2.2 辅助架构 前面我们提到了Hadoop的三大核心功能:分布式存储、分布式计算和资源调度,分别由Hadoop的三大核心组件可以担任。 即HDFS是分布式存储组件,MapReduce是分布式计算

    2024年02月09日
    浏览(37)
  • 一篇搞定分布式大数据系统所有概念,包括有Hadoop、MapReduce、HDFS、HBASE、NoSql 、ZooKeeper 、Reidis 、Nginx 、BASE、CAP定义、特点和应用场景

    1.1hadoop定义和特点 Hadoop定义: Hadoop是一个开源的分布式计算框架,用于存储和处理大规模数据集。它基于Google的MapReduce论文和Google文件系统(GFS)的设计理念,并由Apache软件基金会进行开发和维护。 Hadoop的主要特点包括: 分布式存储:Hadoop通过分布式文件系统(Hadoop Dist

    2024年02月03日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包