MapReduce基础原理、MR与MPP区别

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.mzph.cn/news/24151.shtml

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

相关文章

uniapp:图片验证码检验问题处理

图形验证码功能实现 uniapp&#xff1a;解决图形验证码问题及利用arraybuffer二进制转base64格式图片&#xff08;后端传的图片数据形式&#xff1a;x00\x10JFIF\x00\x01\x02\x00…&#xff09;_❆VE❆的博客-CSDN博客 UI稿&#xff1a; 需求&#xff1a;向后端请求验证码图片&…

arcgis--网络分析(理论篇)

1、定义概念 &#xff08;1&#xff09;网络&#xff1a;由一系列相互联通的点和线组成&#xff0c;用来描述地理要素&#xff08;资源&#xff09;的流动情况。 &#xff08;2&#xff09;网络分析&#xff1a;对地理网络&#xff08;如交通网络、水系网络&#xff09;&…

RTT(RT-Thread)时钟管理

目录 时钟管理 时钟节拍 RTT工程目录结构介绍 配置文件&#xff1a;rtconfig.h 获取系统节拍 获取系统节拍数函数 实例 定时器 RT_Thread定时器介绍 定时器源码分析&#xff08;了解即可&#xff09; rt_system_timer_init (硬件定时器初始化) rt_system_timer_thr…

安全防护,保障企业图文档安全的有效方法

随着企业现在数据量的不断增加和数据泄露事件的频发&#xff0c;图文档的安全性成为了企业必须高度关注的问题。传统的纸质文件存储方式已不适应现代企业的需求&#xff0c;而在线图文档管理成为了更加安全可靠的数字化解决方案。那么在在线图文档管理中&#xff0c;如何采取有…

Windows测试模式打开/关闭 C++ Windows驱动开发

Windows测试模式打开 管理员身份运行CMD 2.输入&#xff1a;bcdedit /set testsigning on 重启计算机 右下角显示&#xff1a; 测试模式成功开启 Windows测试模式关闭 同理&#xff0c;第二步修改为&#xff1a; 重启后右下角&#xff1a; 没有测试模式显示&#xff0c;关闭…

类与对象【中】

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析2 目录 &#x1f449;&#x1f3fb;类的默认6个成员函数&#x1f449;&#x1f3fb;构造…

【linux--->数据链路层协议】

文章目录 [TOC](文章目录) 一、数据链路层协议概念二、以太网帧格式1.字段分析 三、局域网通信原理四、ARP协议1.结构2.作用3.ARP通信过程4.ARP协议相关命令 五、局域网内中间人原理六、DNS系统(域名系统)1.域名概念2.DNS系统组成3.DNS协议3.浏览器输入域名后的通信过程4.dig工…

Linux 创建子进程

文章目录 前言一、进程&#xff0c;线程&#xff0c;程序 区分二、创建子进程三、创建多个进程1. 获取进程号2. 循环创建多个进程 四、进程工具。1. ps 查看当前进程.2. kill 进程终止. 总结 前言 在计算机科学中&#xff0c;进程&#xff08;Process&#xff09;、线程&#…

ChatGPT已打破图灵测试,新的测试方法在路上

生信麻瓜的 ChatGPT 4.0 初体验 偷个懒&#xff0c;用ChatGPT 帮我写段生物信息代码 代码看不懂&#xff1f;ChatGPT 帮你解释&#xff0c;详细到爆&#xff01; 如果 ChatGPT 给出的的代码不太完善&#xff0c;如何请他一步步改好&#xff1f; 全球最佳的人工智能系统可以通过…

删除这4个文件夹,流畅使用手机无忧

在现代社会中&#xff0c;手机已经成为我们生活中不可或缺的一部分。然而&#xff0c;随着使用时间的增长&#xff0c;我们可能会遇到手机卡顿和内存不足的问题&#xff0c;让我们感到十分困扰。手机卡顿不仅影响使用体验&#xff0c;还可能导致应用程序运行缓慢&#xff0c;甚…

python绿色版运行程序,python 绿色版免安装

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python绿色版运行程序&#xff0c;python 绿色版免安装&#xff0c;今天让我们一起来看看吧&#xff01; 软件简介 Python3.7.0 是一种被广大从业者广泛使用的通用型设计语言。该软件提供了丰富全面的模块&#xff0c;并…

MFC第二十七天 通过动态链表实现游戏角色动态增加、WM_ERASEBKGND背景刷新的原理、RegisterClass注册窗口与框架程序开发

文章目录 通过动态链表实现游戏角色动态增加CMemoryDC.hCFlashDlg.hCFlashDlg.cpp WM_ERASEBKGND背景刷新的原理RegisterClass注册窗口与框架程序开发CFrameRegister 通过动态链表实现游戏角色动态增加 CMemoryDC.h #pragma once#include "resource.h"/*内存DC类简介…

6.s081/6.1810(Fall 2022)Lab3: page tables

文章目录 前言其他篇章参考链接0. 前置环境1. Speed up system calls (easy)1.1 简单分析1.2 映射1.3 页分配1.4 页释放1.5 测试 2. Print a page table (easy)2.1 简单分析2.2 实现2.3 测试 3. Detect which pages have been accessed (hard)3.1 简单分析3.2 实现3.2.1 获取参…

8.物联网操作系统之事件标志组

。事件标志组定义 FreeRTOS事件标志组介绍 FreeRTOS事件标志组工作原理 一。事件标志组定义 信号量信号量只能实现任务与单个事件或任务间的同步。但是某些任务可能会需要与多个事件或任务进行同步&#xff0c;此时就可以使用事件标志组来解决。事件标志组能够实现某个任务与…

【PostgreSQL】系列之 一 用户创建和授权(三)

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的…

如何在 Android 上恢复已删除的视频|快速找回丢失的记忆

想知道是否有任何成功的方法可以从 Android 手机中检索已删除的视频&#xff1f;好吧&#xff0c;本指南将向您展示分步说明&#xff0c;让您轻松从手机中找回丢失的视频文件&#xff01; 您是否不小心从 Android 智能手机中删除了珍贵的生日视频&#xff1f;难道是无处可寻吗…

宝塔面板Mysql数据库无法启动(已解决)

1、错误排查 Mysql 无法正常启动直接使用官方提供的脚本检查出错 wget -O sql-repair.sh http://download.bt.cn/install/sql-repair.sh && sh sql-repair.shwget -O sql-repair.sh http://download.bt.cn/install/sql-repair.sh && sh sql-repair.sh 打印出…

LoadRunner

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;JavaEE &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 目录 LoadRunner 安装LoadRunner 三大组件之间的关系LoadRunner 脚本录制WebTours 系统 脚本加强事务插入插入集合点插入检查点参数…

增量式PID算法及其MATLAB实现

增量式PID算法是一种常用的控制算法,用于控制系统中的反馈控制。它通过对系统的误差进行递推式的计算,实现对系统输出的调节,使得系统的输出逐渐趋向于设定值。 delta u(k)=u(k)-u(k-1)=Kp*(e(k)-e(k-1))+Ki*e(k)+Kd*(e(k)-2*e(k-1)+e(k-2)) PID算法由三个部分组成:比例(…

Cat.1如何成为物联网业务加速器?

随着Cat.1芯片及模组在功耗和成本上的不断优化&#xff0c;在窄带物联网领域&#xff0c;越来越多的终端客户把Cat.1当做与NB-IoT相比较的第二选择。越来越多的表计、烟感、市政等行业终端将Cat.1模组应用于非集中化部署的上报类终端业务中&#xff0c;Cat.1这只“网红猫”仍保…