MapReduce概述

批处理模式

首先我们需要先了解一个概念:批处理模式

批处理模式是一种最早进行大规模数据处理的模式。
批处理非常适合需要访问整个数据集合才能完成的计算工作。
批处理主要操作大规模静态数据集,并在整体数据处理完毕后返回结果。
例如,在计算总数和平均数时,必须将数据集作为一个整体加以处理,而不能将其视作多条记录的集合。这些操作要求在计算进行过程中数据维持自己的状态。
需要处理大量数据的任务通常最适合用批处理模式进行处理,批处理系统在设计过程中就充分考虑了数据的量,可提供充足的处理资源。
由于批处理在应对大量持久数据方面的表现极为出色,因此经常被用于对历史数据进行分析。

为了提高处理效率,对大规模数据集进行批处理需要借助分布式并行程序。
传统的程序基本是以单指令、单数据流的方式按顺序执行的; 这种程序开发起来比较简单,符合人们的思维习惯,但是性能会受到单台计算机的性能的限制,很难在给定的时间内完成任务。
而分布式并行程序运行在大量计算机组成的集群上,可以同时利用多台计算机并发完成同一个数据处理任务,提高了处理效率,同时,可以通过增加新的计算机扩充集群的计算能力。
Google 最先实现了分布式并行处理模式 MapReduce,并于2004年以论文的方式对外公布了其工作原理,Hadoop MapReduce 是它的开源实现;Hadoop MapReduce运行在HDFS上。

MapReduce 简释

如果想知道相当厚的一摞牌中有多少张红桃,最直观的方式就是一张张检查这些牌,并且数出有多少张是红桃。
这种方法的缺陷是速度太慢,特别是在牌的数量特别大的情况下,获取结果的时间会很长。
在这里插入图片描述
MapReduce 方法的规则如下:

第一步:把这摞牌分配给在座的所有玩家。
第二步:让每个玩家数自己手中的牌中有几张是红桃,然后把这个数目汇报上来。
第三步:把所有玩家汇报的数字加起来,得到最后的结论。
显而易见,MapReduce方法通过让所有玩家同时并行检查牌来找出一摞牌中有多少红桃,可以大大加快得到答案的速度。

MapReduce 方法使用了拆分的思想,合并了两种经典函数:

  • 映射(Map)

对集合中的每个元素进行同一个操作.
如果想把表单里每个单元格乘以二,那么把这个函数单独地应用在每个单元格上的操作就属于映射.

  • 化简(Reduce)

遍历集合中的元素来返回一个综合的结果.
如果想找出表单里所有数字的总和,那么输出表单里一列数字的总和的任务就属于化简.

下面使用 MapReduce 数据分析的基本方法来重新审视前面分散纸牌找出红桃总数的例子:

在这个例子里,玩家代表计算机,因为他们同时工作,所以他们是个集群。

把牌分给多个玩家并且让他们各自数数,就是在并行执行运算,此时每个玩家都在同时计数。
这就把这项工作变成了分布式的,因为多个不同的人在解决同一个问题的过程中并不需要知道他们的邻居在干什么。
告诉每个人去数数,实际上就是对一项检查每张牌的任务进行了映射。
不是让玩家把红桃牌递回来,而是让他们把想要的东西化简为一个数字。
需要注意的是牌分配得是否均匀。如果某个玩家分到的牌远多于其他玩家,那么他数牌的过程可能比其他人要慢很多,从而会影响整个数牌的进度。

进一步还可以问一些更有趣的问题:
例如,“一摞牌的平均值是什么?”。
我们可以通过合并“所有牌的值的和是什么?”及“我们有多少张牌?”这两个问题来得到答案。
用这个“和”除以“牌的张数”就得到了平均值。

MapReduce 算法的机制要远比数牌复杂得多,但是主体思想是一致的,即通过分散计算来分析大量数据。
无论是 Google、百度、腾讯、NASA,还是小创业公司,MapReduce 都是目前分析互联网级别数据的主流方法。

MapReduce 基本思想

使用 MapReduce 处理大数据的基本思想包括 3 个层面:

首先,对大数据采取分而治之的思想。
对相互间不具有计算依赖关系的大数据实现并行处理,最自然的办法就是采取分而治之的策略。

其次,把分而治之的思想上升到抽象模型。
为了克服 MPI 等并行计算方法缺少高层并行编程模型这一缺陷,MapReduce 借鉴了 Lisp函数式语言中的思想,用 Map 和 Reduce 两个函数提供了高层的并行编程抽象模型。

最后,把分而治之的思想上升到架构层面,统一架构为程序员隐藏系统层的实现细节。

大数据处理思想:化大为小 分而治之

并行计算的第一个重要问题是如何划分计算任务或者计算数据以便对划分的子任务或数据块同时进行计算。
但是,一些计算问题的前后数据项之间存在很强的依赖关系,无法进行划分,只能串行计算。
对于不可拆分的计算任务或相互间有依赖关系的数据无法进行并行计算。
一个大数据若可以分为具有同样计算过程的数据块,并且这些数据块之间不存在数据依赖关系,则提高处理速度的最好办法就是并行计算。

假设有一个巨大的二维数据,大得无法同时放进一个计算机的内存,如下图所示,现在需要求每个元素的开立方。
因为对每个元素的处理是相同的,并且数据元素间不存在数据依赖关系,因此可以考虑将其划分为子数组,由一组计算机并行处理。
在这里插入图片描述

MapReduce实例分析:WordCount

单词计数是最简单也是最能体现 MapReduce 思想的程序之一,可以称为 MapReduce 版"Hello World".
单词计数的主要功能是统计一系列文本文件中每个单词出现的次数。

设计思路

首先,检查单词计数是否可以使用 MapReduce 进行处理。
因为在单词计数程序任务中,不同单词的出现次数之间不存在相关性,相互独立;
所以可以把不同的单词分发给不同的机器进行并行处理。
因此,可以采用MapReduce 来实现单词计数的统计任务。

其次,确定 MapReduce 程序的设计思路。
把文件内容分解成许多个单词,然后把所有相同的单词聚集到一起,计算出每个单词出现的次数。

最后,确定 MapReduce 程序的执行过程。
把一个大的文件切分成许多个分片(HDFS的工作),将每个分片输入到不同结点上形成不同的Map 任务。
每个 Map 任务分别负责完成从不同的文件块中解析出所有的单词。

处理过程

1.将文件拆分成多个分片

该实例把文件拆分成两个分片,每个分片包含两行内容。
在该作业中,有两个执行 Map 任务的结点和一个执行 Reduce 任务的结点。
每个分片分配给一个 Map 结点,并将文件按行分割形成 <key,value> 对,如图所示。
这一步由 MapReduce框架自动完成,其中 key 的值为字符号。

在这里插入图片描述

2.将分割好的 <key,value> 对交给用户定义的 Map 方法进行处理,生成新的 <key,value> 对,如图所示。
在这里插入图片描述

3.在实际应用中,每个输入分片在经过 Map 函数分解以后都会生成大量类似 <Hello,1> 的中间结果,为了减少网络传输开销,框架会把 Map 方法输出的 <key,value> 对按照 key 值进行排序,并执行 Combine(局部合并)过程,将 key 值相同的 value 值累加,得到 Map 的最终输出结果,如图所示。
在这里插入图片描述
4.Reduce 先对从 Map 端接收的数据进行排序,再交由用户自定义的 Reduce 方法进行处理,得到新的 <key,value> 对,并作为结果输出,如图所示。
在这里插入图片描述

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

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

相关文章

基于小程序实现的投票评选系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

MySQL①——数据库与表格的创建

今日任务&#xff1a; 创建一个名为“db_classes”的数据库 创建一行名为“db_hero”的表 将四大名著中的常见人物插入这个英雄表 数据库的创建与删除 create 命令&#xff08;创建&#xff09;&#xff1a; create database 数据库名&#xff1b;#参数默认create database …

制冷用气液分离器介绍

一、什么是气液分离器&#xff1f; 制冷系统作为一个整体除了四大件&#xff08;压缩机、冷凝器、节流装置、蒸发器&#xff09;以外还有很多附属部件&#xff0c;如今天要介绍的——气液分离器。 什么是气液分离器&#xff1f; 汽液分离器的主要作用是&#xff1a;在启动、…

WAAP动态安全解决方案

随着企业数字化进程不断加速&#xff0c;应用安全面临多重威胁&#xff0c;新型攻击方式层出不穷&#xff0c;常见的攻击形式包括Web应用攻击、DDoS攻击、API攻击、恶意爬虫攻击等。企业正面临严峻的安全防护挑战&#xff0c;需寻找一个可靠、全面的安全解决方案。在此情况下&a…

指标完成情况对比查询sql

指标完成情况对比查询sql 1. 需求 2. SQL select--部门dept.name as bm,--年度指标任务-新签&#xff08;万元&#xff09;ndzbwh.nxqndzbrw as nxqndzbrw,--年度指标任务-收入&#xff08;万元&#xff09;ndzbwh.nsrndzbrw as nsrndzbrw,--年度指标任务-回款&#xff08;万…

buuctf-misc-27.面具下的flag

27.面具下的flag 题目&#xff1a;binwalk分离后&#xff0c;解压vmdk文件,对其中的字符进行翻译 将其放到kali中进行binwalk,可以看到有有隐藏的压缩包文件&#xff0c;我们提取一下 文件放到了主目录下&#xff0c;我们使用对应命令发现有zip文件&#xff0c;然后再使用对应…

Linux POSIX消息队列遇到的问题和使用方法

目录 一、开发环境及消息队列介绍二、问题描述三、解决办法四、测试代码 一、开发环境及消息队列介绍 开发板&#xff1a;nuc980 1.ARM Linux中消息队列的原理   在ARM Linux中&#xff0c;消息队列是通过POSIX&#xff08;Portable Operating System Interface&#xff09…

C++仿函数周边及包装器

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

ASP.NET网络在线考试系统

摘 要 随着计算机技术的发展和互联网时代的到来&#xff0c;人们已经进入了信息时代&#xff0c;也有人称为数字化时代。数在数字化的网络环境下&#xff0c;学生希望得到个性化的满足&#xff0c;根据自己的情况进行学习&#xff0c;同时也希望能够得到科学的评价&#xff0c…

小红书爬虫GUI软件 | API接口封装 | 根据笔记链接批量采集笔记详情,含笔记正文内容、发布时间、转评赞藏等

一、背景介绍 1.1 爬取目标 我用python开发的采集软件&#xff0c;可自动按笔记链接抓取笔记的详情数据。 为什么有了源码还开发界面软件呢&#xff1f;方便不懂编程代码的小白用户使用&#xff0c;无需安装python&#xff0c;无需改代码&#xff0c;双击打开即用&#xff0…

pytorch笔记:ModuleDict

1 介绍 在 PyTorch 中&#xff0c;nn.ModuleDict 是一个方便的容器&#xff0c;用于存储一组子模块&#xff08;即 nn.Module 对象&#xff09;的字典这个容器主要用于动态地管理多个模块&#xff0c;并通过键来访问它们&#xff0c;类似于 Python 的字典 2 特点 组织性 nn…

恶补《操作系统》4_2——王道学习笔记

4.1_5 文件存储空间管理 1、存储空间的划分与初始化 文件卷&#xff08;逻辑卷&#xff09;的概念目录区与文件区 2、几种管理方法 空闲表法&#xff1a;首位置长度&#xff0c;回收时注意修改空闲链表法&#xff08;空闲盘块链、空闲盘区链&#xff09;位示图法 成组链接法…

深度学习500问——Chapter08:目标检测(6)

文章目录 8.3.7 RetinaNet 8.3.7 RetinaNet 研究背景 Two-Stage 检测器&#xff08;如Faster R-CNN、FPN&#xff09;效果好&#xff0c;但速度相对慢。One-Stage 检测器&#xff08;如YOLO、SSD&#xff09;速度快&#xff0c;但效果一般。 作者对one-stage检测器准确率不高…

视频编辑软件pitivi基本功之将三个相关视频合并成一个视频

视频编辑软件pitivi基本功之将三个相关视频合并成一个视频 一、素材来源&#xff1a;网站下载 到http://cpc.people.com.cn/GB/67481/435238/437822/437828/437900/index.html下载以下三个视频&#xff0c;鼠标右击视频——另存视频为 庆祝中国共产党成立100周年大会即将开始—…

基于yolov8的苹果腐败检测系统,系统既支持图像检测,也支持视频和摄像实时检测(pytorch框架)【python源码+UI界面+功能源码详解】

更多目标检测和图像分类识别项目可看我主页其他文章 功能演示&#xff1a; 基于yolov8的苹果腐败检测系统&#xff0c;系统既支持图像检测&#xff0c;也支持视频和摄像实时检测_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于yolov8的苹果腐败检测系统是在pytorc…

设计模式之组合实体模式

在编程的奇幻森林里&#xff0c;树木与枝叶错综复杂&#xff0c;如何让代码世界井然有序&#xff1f;组合实体模式&#xff08;Composite Pattern&#xff09;就像一位高明的园艺师&#xff0c;它以一种巧妙的方式&#xff0c;将个体与整体统一管理&#xff0c;让无论是单个对象…

如何配置Jupyter Lab以允许远程访问和设置密码保护

如何配置Jupyter Lab以允许远程访问和设置密码保护 当陪你的人要下车时&#xff0c;即使不舍&#xff0c;也该心存感激&#xff0c;然后挥手道别。——宫崎骏《千与千寻》 在数据科学和机器学习工作流中&#xff0c;Jupyter Lab是一个不可或缺的工具&#xff0c;但是默认情况下…

AI图书推荐:杀手级ChatGPT提示词——利用人工智能实现成功与盈利

《杀手级ChatGPT提示词——利用人工智能实现成功与盈利》&#xff08;Killer ChatGPT Prompts_ Harness the Power of AI for Success and Profit &#xff09;一书是作者Guy Hart-Davis关于ChatGPT的指南&#xff0c;ChatGPT是OpenAI开发的大语言模型。这本书提供了各种职业角…

Java_JVM_JVMs

JVM 官方文档说明文档目录 官方文档 JVM Specification 说明 以Java SE 17为标准 文档目录 2&#xff1a;JVM 结构 class文件数据类型 基本数据类型引用数据类型 运行时数据区 栈帧 其他内容 对象的表示浮点数运算特殊方法 初始化方法【实例、类】多态方法 3&#xff…

第10课程 自动驾驶-控制理论

1. 控制模块 planning 规划 要求时时性质100hz 0.01s进行控制车 2. 控制为什么重要&#xff1f; 3. 预处理 lag compensation 滞后补偿 后处理 4 为什么需要控制 5 傅里叶变换