MapReduce(林子雨慕课课程)

文章目录

      • 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.rhkb.cn/news/154047.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Prometheus和grafana安装配置手册

1.简介 本文档为prometheus和grafana安装配置手册&#xff0c;prometheus和grafana的内容、和操作过程&#xff0c;详细介绍了服务监控配置、dashboard配置、告警配置等操作。 2.部署说明 Prometheus基于Golang编写&#xff08;需要安装&#xff09;&#xff0c;编译后的软件…

PyTorch 深度学习实战

文章目录 前言1. 环境安装1.Anaconda2.pytorch cuda 环境3.测试 前言 官网 https://pytorch.org/hub/pytorch_vision_vgg/ 1. 环境安装 1.Anaconda 可以参考这里&#xff1a;Anaconda学习 2.pytorch cuda 环境 我是按照下面的博客一步步完成&#xff0c;亲测有效 Pytorc…

移动应用-Android-开发指南

Android-UI开发指南 Android Studio调试UI设计UI框架布局Layout文本框 android的活动Activity基本概念Activity的生命周期Activity栈创建Activity管理ActivityActivity间传递数据 FragmentAdapterRecyclerViewRecyclerView Adapter&#xff08;适配器&#xff09;事件setOnItem…

基于BES平台音乐信号处理之DRC算法实现

基于BES平台音乐信号处理之DRC算法实现 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)&#xff1f;加我微信hezkz17, 本群提供音频技术答疑服务 1 DRC实现 drc.h 2 调用 audio_process.c 3 DRC动态范围控制算法在音乐信号处理中的位置 4 DRC具体细节源码 可参考…

Lumos-az/MiniSQL阅读笔记

文章目录 处理SQL创建创建表RecordManager部分CatalogManager部分 创建索引IndexManager::createIndex部分API::createNewIndex部分CatalogManager::createIndex部分 插入删除删除表删除记录? 查询B树gif演示B树增删&#xff1a;插入&#xff1a;删除&#xff1a; 项目源码&am…

ArcGIS Pro地图可视化—双变量关系映射

原址链接ArcGIS Pro地图可视化—双变量关系映射https://mp.weixin.qq.com/s/g-pPBHPXMOEF5NHm06JcrA 这个方法很早很早以前就有了&#xff0c;可能大家早就知道了&#xff0c;可我昨天刚看到这个东西 https://en.wikipedia.org/wiki/Multivariate_map 像是上图&#xff0c;美国…

MyBatisPlus(十)判空查询

说明 判空查询&#xff0c;对应SQL语句中的 IS NULL语句&#xff0c;查询对应字段为 NULL 的数据。 isNull /*** 查询用户列表&#xff0c; 查询条件&#xff1a;电子邮箱为 null 。*/Testvoid isNull() {LambdaQueryWrapper<User> wrapper new LambdaQueryWrapper<…

ctfshow-web9(奇妙的ffifdyop绕过)

尝试万能密码登录&#xff0c;没有任何回显 尝试扫描目录&#xff0c;这里不知道为啥御剑什么都扫不到&#xff0c;使用dirsearch可以扫到robots.txt 查看robots协议 访问下载index.phps 查看index.phps 简单审计一下php代码&#xff1a; $password$_POST[password]; if(strl…

js 之让人迷惑的闭包

文章目录 一、闭包是什么&#xff1f; &#x1f926;‍♂️二、闭包 &#x1f60e;三、使用场景 &#x1f601;四、使用场景&#xff08;2&#xff09; &#x1f601;五、闭包的原理六、思考总结一、 更深层次了解闭包&#xff0c;分析以下代码执行过程二、闭包三、闭包定义四、…

GNN+RA 文献阅读

[1] X. Wang et al., ‘Scalable Resource Management for Dynamic MEC: An Unsupervised Link-Output Graph Neural Network Approach’. paper code&#xff1a;GitHub - UNIC-Lab/LOGNN: This is the code for paper "Scalable Resource Management for Dynamic MEC:…

吃透底层:从路由到前缀树

前言 今天学到关于路由相关文章&#xff0c;发现动态路由中有一个很常见的实现方式是前缀树&#xff0c;很感兴趣这个算法&#xff0c;故进行记录。 前缀树 Trie&#xff08;又被叫做字典树&#xff09;可以看作是一个确定有限状态自动机&#xff0c;尽管边上的符号一般是隐含…

kaggle新赛:写作质量预测大赛【数据挖掘】

赛题名称&#xff1a;Linking Writing Processes to Writing Quality 赛题链接&#xff1a;https://www.kaggle.com/competitions/linking-writing-processes-to-writing-quality 赛题背景 写作过程中存在复杂的行为动作和认知活动&#xff0c;不同作者可能采用不同的计划修…

Godot 添加信号

前言 Godot 里面C#和GDScirpt 的用法完全不一样&#xff0c;网上相关资料太少了。 什么是信号 信号分为信号源&#xff0c;触发&#xff0c;目的节点。信号源在某些条件下触发信号&#xff0c;比如按钮点击&#xff0c;鼠标悬停等事件 #mermaid-svg-wyr9ARVcBFmUUu8y {font-…

JVM面试题:(二)内存结构和内存溢出、方法区的两种实现

内存结构&#xff1a; 方法区和对是所有线程共享的内存区域&#xff1b;而java栈、本地方法栈和程序员计数器是运行是线程私有 的内存区域。 Java堆&#xff08;Heap&#xff09;,是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内 存区域&#xff0c;在…

2023年山东省安全员C证证考试题库及山东省安全员C证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年山东省安全员C证证考试题库及山东省安全员C证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大…

C# 图解教程 第5版 —— 第1章 C# 和 .NET 框架

文章目录 1.1 在 .NET 之前1.2 .NET 时代1.2.1 .NET 框架的组成1.2.2 大大改进的编程环境 1.3 编译成 CIL1.4 编译成本机代码并执行1.5 CLR1.6 CLI1.7 各种缩写1.8 C# 的演化1.9 C# 和 Windows 的演化&#xff08;*&#xff09; 1.1 在 .NET 之前 MFC&#xff08;Microsoft Fou…

论文解析——AMD EPYC和Ryzen处理器系列的开创性的chiplet技术和设计

ISCA 2021 摘要 本文详细解释了推动AMD使用chiplet技术的挑战&#xff0c;产品开发的技术方案&#xff0c;以及如何将chiplet技术从单处理器扩展到多个产品系列。 正文 这些年在将SoC划分成多个die方面有一系列研究&#xff0c;MCM的概念也在不断更新&#xff0c;AMD吸收了…

Docker-compose创建LNMP服务并运行Wordpress网站平台

一、部署过程 1.安装Docker #关闭防火墙 systemctl stop firewalld.service setenforce 0#安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 #设置阿里云镜像源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/d…

JavaEE-文件IO操作

构造方法 一般方法&#xff0c;有很多&#xff0c;我们以下只是列举几个经常使用的 注意在上述的操作过程中&#xff0c;无论是绝对路径下的这个文件还是相对路径下的这个文件&#xff0c;都是不存在的 Reader 使用 --> 文本文件 FileReader类所涉及到的一些方法 Fil…