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;如何采取有…

RW-Everything的RwDrv.sys驱动调用

RW-Everything的RwDrv.sys驱动调用 一、RwDrv.sys二、示例代码三、总结 一、RwDrv.sys RW-Everything是一个硬件底层的工具&#xff0c;可用于物理内存、BIOS、PCI和IO端口的查看和修改&#xff0c;其基于驱动RwDrv.sys来实现&#xff0c;利用这个驱动可以实现系统的侵入。 二…

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

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

图像处理学习笔记

图像处理的流程&#xff1a;获取图像-分割区域-特征提取。 嵌入式工业读码器 &#xff1a;包括DM码、QR码、vericode码 Blob分析与形态学 1.Blob区域是Blobs这一数据类型在halcon中的一种贴切的表达形式。 采集图像-区域分割&#xff0c;最后通过特征&#xff08;如圆度、面积、…

类与对象【中】

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

代码编辑器实践之vue-codemirror使用

前言 程序员用到IDE次数比较频繁&#xff0c;比如vscode、idea等&#xff0c;这些都是市场上比较流行的代码编辑器&#xff0c;拥有非常全面的功能。但是有时候在项目开发上也会用到代码编辑器&#xff0c;比如复杂的Array<Object>输入&#xff0c;或者需要用到用户交互…

1、Thonny+MicroPython+ESP32开发环境搭建

1. 整体流程说明 1.1 ESP32 大白话来说:ESP32就是一个开发板,上面有芯片以及用到的其它硬件 1.2 ESP32运行程序? 只要是硬件电路(数字电路)那么就可以通过编程的方式对其进行控制 那么这个开发板能认识什么样的程序呢?python?C?C++?Java?。。。。 答:只认识二…

【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;甚…

flex 布局使用 space-between 时将最后一行左对齐

1.使用占位元素 特点&#xff1a;适用于任意列数布局&#xff0c;比较简单&#xff0c;缺点是会产生空标签 方法&#xff1a;使用循环体循环一整行空元素。宽度为单个元素宽度&#xff0c;高度为0 <div class"flex-box"><div class"item-box" v…

HTML <ruby> 标签

实例 一个 ruby 注释&#xff1a; <ruby> 漢 <rt><rp>(</rp>ㄏㄢˋ<rp>)</rp></rt> </ruby>定义和用法 <ruby> 标签定义 ruby 注释&#xff08;中文注音或字符&#xff09;。 在东亚使用&#xff0c;显示的是东亚字…

AutoSAR系列讲解(实践篇)12.2-CanTP

目录 CanTP 一、主要作用 二、诊断传输流程 CanTP CanTP说起来其实重要也不重要,其本身是设计可以用于CAN的很多传输协议,但是目前基本上也就咱们做诊断的时候用用,不过虽然简单,我们也 讲讲 一、主要作用 CanTp是位于PduR和CanIf之间的一个模块,主要提供以下服务:…

论文阅读-Neighbor Contrastive Learning on Learnable Graph Augmentation(AAAI2023)

人为设计的图增强&#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类简介…