分布式数据处理MapReduce简单了解

文章目录

  • 产生背景
  • 编程模型
    • 统计词频案例
  • 实现机制
  • 容错机制
    • Master的容错机制
    • Worker的容错机制

产生背景

在这里插入图片描述
MapReduce是一种分布式数据处理模型和编程技术,由Google开发,旨在简化大规模数据集的处理。产生MapReduce的背景:

  1. 数据量的急剧增长:随着互联网的快速发展,产生的数据量急剧增加,传统的数据处理方法已经无法有效处理如此庞大的数据集。需要一种能够在数以千计的计算机上并行处理大数据的方法。
  2. 分布式计算需求增加:为了处理大规模数据集,需要将数据分布在多个计算节点上进行并行处理。这就要求有一种可靠的方法来协调这些节点之间的工作,处理节点间的通信,以及处理节点故障时的数据恢复。
  3. 简化并行计算:虽然分布式和并行计算技术已经存在,但它们往往需要开发者具有高度的专业知识。Google希望开发一种简单的编程模型,让开发者不需要深入了解分布式系统的底层细节,也能开发出高效的分布式应用。
  4. Google的实际需求:Google需要处理网页索引、搜索结果排序等涉及大量数据的任务。这些任务不仅数据量大,而且需要频繁更新。MapReduce的设计就是为了优化这些任务的处理效率,提高资源利用率和处理速度。

  • MapReduce:封装并行处理、容错处理、本地化计算、负载均衡的细节,还提供简单而强大的接口,通过该接口可以把大尺度的计算自动地并发和分布执行,并具备较好的通用性。

编程模型

    • MapReduce模型包含两个关键步骤:Map(映射)和Reduce(归约)。在Map阶段,输入数据被分成独立的小块,然后并行处理。在Reduce阶段,处理结果被汇总为最终结果。这种模型大大简化分布式计算的复杂性,使得程序员可以用较少的代码行数处理大量数据。
  • MapReduce的成功推动了大数据和分布式计算技术的发展,Hadoop就是受其启发创建的一个开源框架,它允许使用简单的编程模型来处理大规模数据集。
    在这里插入图片描述
  • Map函数——对一部分原始数据进行指定的操作。每个Map操作都针对不同的原始数据,因此Map与Map之间是互相独立的,这使得它们可以充分并行化
  • Reduce操作——对每个Map所产生的一部分中间结果进行合并操作,每个Reduce所处理的Map中间结果是互不交叉的,所有Reduce产生的最终结果经过简单连接就形成了完整的结果集。
Map: (in_key, in_value) -> {(keyj, valuej) | j = 1…k}
Reduce: (key, [value1,,valuem]) -> (key, final_value) 
  • Map输入参数:in_key和in_value,它指明了Map需要处理的原始数据
  • Map输出结果:一组<key,value>对,这是经过Map操作后所产生的中间结果
  • Reduce输入参数:(key,[value1,…,valuem])
  • Reduce工作:对这些对应相同key的value值进行归并处理
  • Reduce输出结果:(key, final_value),所有Reduce的结果并在一起就是最终结果

统计词频案例

  1. Mapreduce首先把数据切片,切成若干块,然后每一块启动一个map函数进行处理;
  2. map函数接受的 键是文件名,值是文件的内容 键是文件名,值是文件的内容 键是文件名,值是文件的内容,键值对<文件名, 文件内容>;map逐个遍历单词,每遇到一个单词w,就产生一个中间键值对<w, "1">,这表示又找到了一个单词w;
  3. 每一个map所产生的中间键值对,要再进行分区,即将这些中间键值对再切成若干块,每一块交给一个reduce函数进行处理;
  4. MapReduce将键相同(都是单词w)的键值对传给reduce函数,这样reduce函数接受的键就是单词w,值是一串"1",个数等于键为w的键值对的个数,然后将这些“1”累加就得到单词w的出现次数。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

实现机制

在这里插入图片描述

MapReduce的实现机制过程:

  1. 首先,MapReduce将输入文件切分成多个块,并分配给不同的Map任务进行处理。
  2. 每个Map任务读取并处理与其相关的输入块,生成中间结果,并将这些结果缓存到内存中。
  3. 定期将缓存的中间结果写入本地硬盘,并根据分区函数将数据分成多个区。
  4. 当Master通知执行Reduce的Worker时,它调用远程过程,从Map Worker的本地硬盘上读取缓存的中间数据。
  5. Reduce Worker根据每个唯一的中间键遍历排序后的中间数据,并将键和相关的中间结果值集合传递给用户定义的Reduce函数。
  6. 当所有的Map任务和Reduce任务都完成时,Master激活用户程序,最终将所有Reduce任务的结果连接起来形成完整的结果集。
Created with Raphaël 2.3.0 输入文件 切分成多个块 分配给不同的Map任务 Map任务处理并生成中间结果 缓存中间结果到内存 定期写入本地硬盘 根据分区函数分成多个区 Master通知执行Reduce的Worker 调用远程过程读取中间数据 Reduce Worker遍历排序后的中间数据 传递键和相关的中间结果给Reduce函数 所有Map和Reduce任务完成 激活用户程序 合并所有Reduce任务的结果 输出最终结果集 结束

容错机制

  • 由于MapReduce在成百上千台机器上处理海量数据,所以容错机制是不可或缺的。
  • MapReduce中的容错机制是确保系统在处理海量数据时能够处理故障和失效情况的重要组成部分。

Master的容错机制

  • Master会周期性地设置检查点并导出数据,以便在任务失效时进行恢复和重新执行。
  • 如果Master失效,整个MapReduce程序将终止并重新开始。
  • Master会定期发送ping命令给Worker,如果没有Worker的应答,则认为Worker失效,并将任务调度到其他Worker上重新执行。

Worker的容错机制

  • 如果Worker失效,Master会终止对该Worker的任务调度,并将任务调度到其他Worker上重新执行。

  • 总的来说,MapReduce通过重新执行失效的地方来实现容错。Master和Worker之间的通信和检查机制确保系统在面对故障和失效时的可靠性和稳定性。

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

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

相关文章

通过OceanBase 3.x中not in无法走hash连接的变化,来看OB优化器的发展

作者简介&#xff1a; 张瑞远&#xff0c;曾从事银行、证券数仓设计、开发、优化类工作&#xff0c;现主要从事电信级IT系统及数据库的规划设计、架构设计、运维实施、运维服务、故障处理、性能优化等工作。 持有Orale OCM,MySQL OCP及国产代表数据库认证。 获得的专业技能与认…

C#,数值计算,矩阵相乘的斯特拉森(Strassen’s Matrix Multiplication)分治算法与源代码

Volker Strassen 1 矩阵乘法 矩阵乘法是机器学习中最基本的运算之一,对其进行优化是多种优化的关键。通常,将两个大小为N X N的矩阵相乘需要N^3次运算。从那以后,我们在更好、更聪明的矩阵乘法算法方面取得了长足的进步。沃尔克斯特拉森于1969年首次发表了他的算法。这是第…

【刷题】双指针进阶

请看入门篇 &#xff1a;双指针入门 送给我们一句话&#xff1a; 如今我努力奔跑&#xff0c;不过是为了追上那个曾经被寄予厚望的自己 —— 约翰。利文斯顿 双指针进阶 Leetcode 611 有效三角形的个数Leetcode LCR179.查找总价格为目标值的两个商品Leetcode 15.三数之和Thanks…

手把手教你使用Python第三方模块

1.第三方模块 一般是别人解决特定问题的功能进行了封装&#xff0c;可以通过安装直接使用 注意 第三方模块需要先安装&#xff0c;才能使用 常见的安装方式&#xff1a;通过pip工具或者通过pycharm编辑器进行安装 2.pip指令安装 pip -V # 查看pip的版本 pip 23.2.1 fr…

基于PHP的数字化档案管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的数字化档案管理系统 一 介绍 此数字化档案管理系统基于原生PHP&#xff0c;MVC架构开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 php(mvc)mysqlbootstrapphpstudyvscode 二 功能 …

网络原理(网络协议初识)

目录 1.网络通信基础 1.1IP地址 1.2端口号 1.3认识协议 1.4五元组 1.5 协议分层 2.TCP/IP五层&#xff08;或四层&#xff09;模型 2.1网络设备所在分层 2.2网络分层对应 3.封装和分用 1.网络通信基础 网络互连的目的是进行网络通信&#xff0c;也即是网络数据传输&#…

手写简易操作系统(九)--实现打印函数

前情提要 前面我们已经进入内核程序了&#xff0c;中间穿插了一点特权级的知识&#xff0c;现在我们开始准备一个打印函数 很不幸&#xff0c;还有汇编程序 一、C调用规约 因为涉及到C与汇编的联合编程&#xff0c;我们这里简述一下调用规约&#xff0c;调用规约就是约定参…

Node.js 学习笔记 fs、path、http模块;模块化;包;npm

Node.js学习 Node.js一、定义1.前端工程化2.Node.js 为何能执行 JS&#xff1f;3.安装nodejs、删除之前的nodejs4.使用 Node.js 二、fs模块 \- 读写文件三、path 模块案例 - 压缩前端html四、HTTP相关URL中的端口号常见的服务程序http 模块-创建 Web 服务案例&#xff1a;浏览时…

Python二级备考

考试大纲如下&#xff1a; 基本要求 考试内容 考试方式 比较希望能直接刷题&#xff0c;因为不懂的比较多可能会看视频。 基础操作刷题&#xff1a; 知乎大头计算机1-13题 import jieba txtinput() lsjieba.lcut(txt) print("{:.1f}".format(len(txt)/len(ls)…

XIAO ESP32S3部署Edge Impulse模型

在上一篇文章中我们介绍了如何使用edge impulse训练一个图片分类模型并导出arduino库文件。在这篇文章中我们将介绍如何在esp32s3中部署这个训练好的图片分类模型。 添加进Arduino库 有两种方法将下载的文件添加进Arduino库。 在Arduino IDE程序中&#xff0c;转到项目选项卡…

✅技术社区—集成xxl-job实现定时任务的管理和执行

xxl-job是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。(其中XXL是作者许雪里的简称) xxl-job是对老牌调度平台Quartz进行的封装。在开始介绍xxl-job之前我来先简单…

Jmeter —— jmeter中元件的执行顺序作用域

元件的执行顺序&#xff1a; 配置元件-->前置处理程序-->定时器-->取样器-->后置处理程序&#xff08;除非Sampler 得 到的返回结果为空&#xff09;-->断言&#xff08;除非Sampler 得到的返回结果为空&#xff09;-->监听器 &#xff08;除非Sampler 得到…

【Redis系列】深入了解 Redis:一种高性能的内存数据库

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

微信小程序-day01

文章目录 前言微信小程序介绍 一、为什么要学习微信小程序?二、微信小程序的历史创建开发环境1.注册账号2.获取APPID 三、下载微信开发者工具1.创建微信小程序项目2.填写相关信息3.项目创建成功 四、小程序目录结构项目的主体组成结构 总结 前言 微信小程序介绍 微信小程序&…

新 树莓派4B 温湿度监测 基于debian12的树莓派OS

前言 本文旨在完成通过外接温湿度传感器至树莓派使得树莓派不断记录并存储温湿度数据 这个领域有很多文章&#xff0c;但是部分文章已经缺乏了时效性&#xff0c;在最新系统不适用&#xff0c;本文目前适用 硬件 硬件连接 温湿度传感器常选用DHT11和DHT22&#xff0c;淘宝…

HelpLook AI 升级!一键生成SEO设置关键要素

| 现代SEO营销为何选择与AI同行 众多企业面临SEO优化日趋复杂的挑战&#xff0c;投入的时间和资源不断攀升。然而&#xff0c;HelpLook利用AI技术&#xff0c;一键完成SEO关键词和描述的生成&#xff0c;无需额外付费或繁琐操作&#xff0c;轻松提升网站曝光和点击率&#xff…

Android 学习之追踪应用的安装情况

先上结论&#xff0c;急用的话直接看结论 结论一、借助 API 读取安装信息&#xff0c;然后上报二、借助手动埋点&#xff0c;然后上报三、对比 前提过程 结论 一、借助 API 读取安装信息&#xff0c;然后上报 通过 PackageManager 的 API&#xff0c;我们可以得知自身应用安装…

【SSM】任务列表案例 基本CRUD SSM整合

文章目录 一、案例功能预览二、接口分析三、前端工程导入四、后端程序实现和测试4.1 准备4.2 功能实现4.2.1 分页查询显示4.2.2 添加计划4.2.2 删除计划4.2.3 修改计划 4.3 前后联调 一、案例功能预览 Github 地址 &#xff1a; ssm-integration-part 二、接口分析 学习计划…

【话题】2024年AI辅助研发趋势,有那些应用领域

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读文章&#xff01; 此篇是【话题达人】系列文章&#xff0c;这一次的话题是《2024年AI辅助研发趋势》 目录 背景概念实践医药领域汽车设计领域展望未来文章推荐 背景 随着人工智能技术的持续发展与突破&#xff0c;2024年AI辅…

BI数据分析案例详解:零售人货场分析该怎么做?

在当今快节奏、高竞争的商业环境中&#xff0c;人货场分析已成为企业成功的关键因素之一。科技的进步和数据的日益丰富使得企业对人流、货物流和场地布局的深入洞察变得愈发重要。通过科学的人货场分析&#xff0c;企业能更好地理解顾客行为、优化供应链、提高运营效率&#xf…