MapReduce基础原理、MR与MPP区别

news2024/9/21 19:00:30

MapReduce概述

  • MapReduce(MR)本质上是一种用于数据处理的编程模型;MapReduce用于海量数据的计算HDFS用于海量数据的存储(Hadoop Distributed File System,Hadoop分布式文件系统)。
  • Hadoop MapReduce 是一个编程框架,Hadoop环境中,可运行用各种语言编写的MapReduce程序,用于创建在大型商用硬件集群上处理大量数据的应用程序,类似于JRE环境,可以在这个架构下开发应用程序。
  • MapReduce 程序本质上并行,本质是通过并行计算提升算力。
  • MapReduce是一种编程模型,用于通过集群上的并行分布式算法处理大型数据集。MapReduce会将任务分为小部分,将它们分配给不同系统来独立处理每个部分,在处理完所有零件并进行分析之后,将输出收集到一个位置,然后为给定问题输出数据集
  • MapReduce使用的基本信息单位是键值对在通过MapReduce模型传递之前,所有结构化或非结构化数据都需要转换为键值对
  • MapReduce模型具有两个不同的功能,映射功能和归约功能
  • MapReduce 的工作模式主要分为 Map 阶段和还原阶段(shuffle阶段和reducer阶段)。
  • 操作顺序始终为:Map -> Shuffle -> Reduce
    • Map阶段:Map阶段是MapReduce框架中的关键步骤,映射器将为非结构化数据提供结构,映射器将一次处理一个键值对,一个输入可以产生任意数量的输出,Map函数将处理数据并生成几个小数据块
    • 还原阶段:shuffle阶段和reducer阶段一起称为还原阶段,Reducer将来自映射器的输出作为输入,并按照程序员的指定进行最终输出,此新输出将保存到HDFS。Reducer将从映射器中获取所有键-值对,并检查所有键与值的关联;将获取与单个键关联的所有值,并将提供任意数量的键值对的输出。
    • MapReduce是顺序计算,为保障Reducer正常工作,Mapper必须完成执行,否则Reducer阶段将不会运行。
  • 在 Hadoop 集群中,计算节点一般和存储节点相同,即 MapReduce 框架和 HDFS(Hadoop 分布式文件系统)均运行在同一组节点上。这种配置允许框架有效地调度已经存在数据的节点上的作业,使得跨集群的带宽具有较高的聚合度,能够有效利用资源。

MapReduce 工作原理

一个 MapReduce 任务(Job)通常将输入的数据集分割成独立的块,这些块被 map 任务以完全并行的方式处理。框架对映射(map)的输出进行排序,然后将其输入到 reduce 任务中。通常,作业的输入和输出都存储在文件系统中。框架负责调度任务、监视任务并重新执行失败的任务

上面说到,MapReduce 框架只对 <key, value> 键值对形式的键值对进行处理。
该框架会将任务的输入当成一组 <key, value> 键值对,最后也会生成一组 <key, value> 键值对作为结果。其中的 key 和 value 可以根据具体问题将其理解为不同的类型。

key 和 value 的类必须由框架来完成序列化,因此我们需要做的就是实现其中的可写接口(Writable)。此外,对于其中的一些关键类还必须实现 WritableComparable 接口,以便于框架对其进行排序。

一个 MapReduce 作业从输入到输出的过程中,经历了以下过程:
(输入的原始数据)<k1, v1> -> Map -> <k2, v2> -> Combine -> <k2, v2> -> Reduce -> <k3, v3>(输出的计算结果)
在这里插入图片描述

在这里插入图片描述

ResourceManager

MapReduce 框架由单个主节点(Master)的 ResourceManager每个从节点(Slave) NodeManager每个应用程序的 MRAppMaster组成。

在编程框架完善并打包之后,Hadoop 的作业客户端(job client)可以将作业(一般是 jar 包或者可执行文件)和配置项提交给 ResourceManager,ResourceManager负责将作业代码和配置项分发给从节点(Slave),之后ResourceManager负责作业的调度和监视,同时也向作业客户端提供状态和诊断信息。
在这里插入图片描述

  • Client Service:应用提交、终止、输出信息(应用、队列、集群等的状态信息)。
  • Adaminstration Service: 队列、节点、Client 权限管理。
  • ApplicationMasterService: 注册、终止 ApplicationMaster, 获取 ApplicationMaster 的资源申请或取消的请求,并将其异步地传给 Scheduler, 单线程处理。
  • ApplicationMaster Liveliness Monitor: 接收 ApplicationMaster 的心跳消息,如果某个 ApplicationMaster 在一定时间内没有发送心跳,则被任务失效,其资源将会被回收,然后 ResourceManager 会重新分配一个 ApplicationMaster 运行该应用(默认尝试 2 次)。
  • Resource Tracker Service: 注册节点, 接收各注册节点的心跳消息。
  • NodeManagers Liveliness Monitor: 监控每个节点的心跳消息,如果长时间没有收到心跳消息,则认为该节点无效, 同时所有在该节点上的 Container 都标记成无效,也不会调度任务到该节点运行。
  • ApplicationManager: 管理应用程序,记录和管理已完成的应用。
  • ApplicationMaster Launcher: 一个应用提交后,负责与 NodeManager 交互,分配 Container 并加载 ApplicationMaster,也负责终止或销毁。
  • YarnScheduler: 资源调度分配, 有 FIFO(with Priority),Fair,Capacity 方式。
  • ContainerAllocationExpirer: 管理已分配但没有启用的 Container,超过一定时间则将其回收。

MPP与MapReduc区别

MPP和MapReduc的区别主要体现在计算方式上,MPP和MapReduce都是用于实现并行化处理的技术,但它们采用的并行化策略不同

关于MPP理解
MPP(Massively Parallel Processing)即大规模并行处理,是一种在多个处理器间分配工作负载的并行计算模型,常用于传统的关系数据库管理系统中,以提高数据库处理的性能和吞吐量。MPP系统通常由成百上千个节点(节点指的是一组处理器和存储器)组成,每个节点都运行数据库的一个实例,各个节点之间通过高速网络互相通信,MPP系统会将数据表分片(通过切割表中的行),这些数据片会被分配到每个节点上,每个节点都有独立的存储器。

MPP系统的平行计算方式是将数据库划分为若干个子部分,设定若干个可供并行计算的操作,每个操作运行在一个节点上,从而并行地进行处理,由于MPP的数据是在不同节点分片存储,因此一般来说MPP的计算任务每一部分是和固定节点绑定的。

MapReduc是一种基于“映射(Map)”和“化简(Reduce)”的并行计算模型,主要用于海量数据的分布式处理。一般来说,MapReduce将大数据集分成若干个小数据块,并且将每个数据块分配给不同的计算节点来处理。每个节点都独立地对数据块进行“Map”操作,得到中间数据,然后将相同中间数据的部分发送到同一节点进行“Reduce”操作,最终将得到的数据合并起来,得到最终结果。

因此,MPP和MapReduce在并行计算中的采用策略不同,更应用于不同的领域。MPP主要用于传统的关系型数据库的大规模并行处理,适合相对简单的计算场景。MapReduce更适合分布式计算、海量数据的分析和处理,适用于更复杂、更庞大的场景。虽然两种技术都有其优缺点,但在不同的情况下,它们都有效地推动了计算的并行处理。

MapReduce: Simplified Data Processing on Large Clusters

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

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

相关文章

数据库的约束 详解

一、约束的概述 1.概念:约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。 2&#xff0e;目的:保证数据库中数据的正确、有效性和完整性。 3.分类: 约束描述关键字非空约束限制该字段的数据不能为nullNOT NULL唯一约束保证该字段的所有数据都是唯一、不…

uni-app uView自定义底部导航栏

因项目需要自定义底部导航栏&#xff0c;我把它写在了组件里&#xff0c;基于uView2框架写的&#xff08;vue2&#xff09;&#xff1b; 一、代码 在components下创建tabbar.vue文件&#xff0c;代码如下&#xff1a; <template><view><u-tabbar :value"c…

DALLE2论文解读及实现(一)

DALLE2: Hierarchical Text-Conditional Image Generation with CLIP Latents paper: https://cdn.openai.com/papers/dall-e-2.pdf github: https://github.com/lucidrains/DALLE2-pytorch DALLE2概览&#xff1a; - CLIP模型&#xff1a; 用于生成text embedding zt 和image …

CentOS 搭建 Harbor 镜像仓库(图文详解)

本文目录 1. 下载 Harbor 安装包2. 解压3. 修改配置文件4. 安装 Harbor5. 修改 docker 配置6. docker 登录方式7. 访问 Harbor Web 界面8. 创建证书9. 生成证书10. 更新配置11. 网页登录 说明&#xff1a;在搭建 Harbor 镜像仓库之前&#xff0c;虚拟机要先安装 docker 和 dock…

123.买卖股票的最佳时机3

目录 一、题目 二、分析代码 一、题目 123. 买卖股票的最佳时机 III - 力扣&#xff08;LeetCode&#xff09; 二、分析代码 class Solution { public:int maxProfit(vector<int>& prices) {//0表示没有操作//1表示第1次买入&#xff0c;2表示第1次卖出//3表示第2…

Blazor前后端框架Known-V1.2.10

V1.2.10 Known是基于C#和Blazor开发的前后端分离快速开发框架&#xff0c;开箱即用&#xff0c;跨平台&#xff0c;一处代码&#xff0c;多处运行。 Gitee&#xff1a; https://gitee.com/known/KnownGithub&#xff1a;https://github.com/known/Known 概述 基于C#和Blazo…

LeetCode 42. 接雨水(动态规划 / 单调栈)

题目&#xff1a; 链接&#xff1a;LeetCode 42. 接雨水 难度&#xff1a;困难 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2…

【Spring Cloud 六】Hystrix熔断

这里写目录标题 系列文章目录背景一、Hystrix是什么服务雪崩服务容错的相关概念熔断器降级超时控制限流 二、会什么要有Hystrix三、如何使用Hystrix进行熔断处理整体项目代码服务提供者pom文件yml配置文件启动类controller 服务消费者pom文件yml配置文件启动类feignhystrixcont…

python机器学习(七)决策树(下) 特征工程、字典特征、文本特征、决策树算法API、可视化、解决回归问题

决策树算法 特征工程-特征提取 特征提取就是将任意数据转换为可用于机器学习的数字特征。计算机无法直接识别字符串&#xff0c;将字符串转换为机器可以读懂的数字特征&#xff0c;才能让计算机理解该字符串(特征)表达的意义。 主要分为&#xff1a;字典特征提取(特征离散化)…

数据结构和算法——了解哈希表(哈希查找、散列的基本思想)

目录 哈希查找 散列的基本思想 例一 例二 哈希查找 我们之前学过的几种查找方法&#xff1a; 顺序查找 二分查找&#xff08;静态查找&#xff09; 二叉搜索树 h为二叉查找树的高度平衡二叉树 还有没有更快的查找方法呢&#xff1f; …

安卓:实现复制粘贴功能

目录 一、介绍 &#xff08;一&#xff09;ClipboardManager介绍 1、ClipboardManager常用方法&#xff1a; 2、获取 ClipboardManager实例 &#xff08;二&#xff09;、ClipData介绍 1、创建ClipData对象&#xff1a; 2、获取ClipData的信息&#xff1a; 3、ClipData…

原型链污染攻击

原型链污染攻击 prototype 和 _proto_是什么 JavaScript中的类的简历 在JavaScript中&#xff0c;我们如果要定义一个类&#xff0c;需要以定义“构造函数”的方式来定义&#xff1a; function Foo() {this.bar 1 }new Foo() 解析&#xff1a; Foo函数的内容&#xff0c;就…

【Redis】——AOF持久化

什么是AOF日志 AOF日志是redis为数据的持久化提供了的一个技术,日志里面记录着执行redis写命令。每当redis执行一条写命令的时候&#xff0c;就会将该命令记录 到AOF日志当中。当redis启动的时候&#xff0c;可以加载AOF日志中的所有指令&#xff0c;并执行这些指令恢复所有的…

RocketMQ基本概念和高级原理

基础概念 消息模型 RocketMQ 主要由 Producer、Broker、Consumer 三部分组成&#xff0c;其中 Producer 负责生产消息&#xff0c;Consumer 负责消费消息&#xff0c;Broker 负责存储消息。Broker 在实际部署过程中对应一台服务器&#xff0c;每个 Broker 可以存储多个 Topic…

ubuntu搭建wifi热点,共享网络(x86、arm相同)

目录 1 首先检查网络管理器服务是否开启 &#xff08;ubuntu需要界面&#xff09; 2 创建并配置需要共享的wifi 首先&#xff0c;明确下这篇文章说的是啥&#xff0c;是为了在ubuntu系统的电脑上&#xff0c;搭建一个wifi热点&#xff0c;供其他移动设备连接上网。就像你…

使用隧道HTTP时如何解决网站验证码的问题?

使用代理时&#xff0c;有时候会遇到网站验证码的问题。验证码是为了防止机器人访问或恶意行为而设置的一种验证机制。当使用代理时&#xff0c;由于请求的源IP地址被更改&#xff0c;可能会触发网站的验证码机制。以下是解决网站验证码问题的几种方法&#xff1a; 1. 使用高匿…

android AIDL 学习使用

在android studio 2023.2中使用 1、在buidl.gradle增加以下配置&#xff0c;然后同步。不增加这些配置&#xff0c;创建aidl时显示为灰色&#xff0c;不能创建 buildFeatures {compose true// Disable unused AGP featuresbuildConfig falseaidl truerenderScript falseresVal…

手眼标定眼在手上

1、为什么要用手眼标定&#xff08;在贴片机上定位已调通&#xff09; 参考手眼标定特别是眼在手上在网上的文章很多&#xff0c;但很多在实际中调试不通。在定位时候&#xff0c;往往希望相机能返回的是机械的世界坐标&#xff0c;而不是相机的的图像坐标。从而间接计算出相机…

JavaWeb三大组件 —— Servlet

目录 servlet 注册servlet 父pom pom文件 1、通过注解注册 2、使用ServletRegistrationBean注册 API三生三世 第一生Servlet 第二生SpringMVC 今生SpringBoot servlet Servlet的作用&#xff1a; 接受请求参数、处理请求&#xff0c;响应结果&#xff0c;&#xff08;就…

Qlik Sense 移动端安装配置

在之前的文章中&#xff0c;我们了解到Qlik Sense是一款数据分析可视化的应用&#xff0c;使人们能够轻松地组合来自许多不同来源的数据&#xff0c;并自由探索&#xff0c;而不受基于查询的工具的限制。不仅支持Web端访问&#xff0c;还有配套的Windows Desktop使用&#xff0…