分布式数据处理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之间的通信和检查机制确保系统在面对故障和失效时的可靠性和稳定性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RAID技术知识详解到RAID 10的linux实现过程

1.RAID技术简介 RAID&#xff08;Redundant Array of Independent Disks&#xff09;独立磁盘冗余阵列。通俗来说就是将多个硬盘通过软件或硬件结合成虚拟单台大容量的硬盘使用。 RAID技术的特点&#xff1a; 可以自动检测故障硬盘&#xff1b; 可以重建硬盘坏道的资料&…

深度学习模型部署-番外-TVM机器学习编译

什么是机器学习编译器/AI编译&#xff1f; 图片来自知乎大佬的文章 机器学习编译是指&#xff1a;将模型从训练形式转变为部署模式 训练模式&#xff1a;使用训练框架定义的模型部署模式&#xff1a;部署所需要的模式&#xff0c;包括模型每个步骤的实现代码&#xff0c;管理资…

html--宠物

文章目录 htmljscss html <!DOCTYPE html> <html lang"en" > <head><meta charset"UTF-8"><title>CodePen - Spaceworm</title><script> window.requestAnimFrame (function() {return (window.requestAnimat…

简单的思考(一):MATLAB实现心形线

今天刷B站的时候看见了&#xff1a; 于是想着自己能不能也做出来 clc;clear; % 定义x的范围 x -2:0.01:2;% 初始化图形 figure; set(gcf,position,[0,0,800,600],color,w); h1 plot(x,abs(x).^(2/3) (0.9*sqrt((3.3-x.^2))).*sin(0.1*pi*x),r,LineWidth,3); hold on xlim(…

HAProxy——高性能负载均衡器

目录 一.常见的Web集群调度器 二.HAProxy基本介绍 1.HAProxy是什么&#xff1f; 2.HAProxy的特性 3.HAProxy常用的8种负载均衡调度算法 3.1 轮询&#xff1a;RR&#xff08;Round Robin&#xff09; 3.2 最小连接数&#xff1a;LC&#xff08;Least Connections&#xff…

基于JAVA的教务系统小程序的设计与实现【附项目源码】分享

基于JAVA的教务系统小程序的设计与实现: 源码地址&#xff1a;https://download.csdn.net/download/qq_41810183/88842782 一、引言 随着信息技术的不断发展&#xff0c;教务管理工作逐渐走向数字化、智能化。为了提高教务管理效率&#xff0c;方便师生查询教务信息&#xff…

ChatGPT 插件Plugin集合

ChatGPT的插件功能推出一段时间了&#xff0c;陆陆续续的上架了得有200了。 但是其中大部分都不是很好用&#xff0c;并且找起来也复杂。 推荐一个不知名热心人做的导航页。 ChatGPT Plugins Overview 基本上集合了所有的插件&#xff0c;并且还在实时更新中。 需要升级4.0&a…

机器学习 Python库 乱记录

MLFlow—模型实验和跟踪 MLflow是一个平台&#xff0c;帮助你从头到尾管理你的机器学习实验&#xff0c;确保可追溯性和可重复性。它提供了一个集中的存储库&#xff0c;用于存储你的代码、数据和模型工件&#xff0c;以及一个跟踪系统&#xff0c;记录你所有的实验&#xff0c…

前端实现文件预览(pdf、excel、word、图片)

需求&#xff1a;实现一个在线预览pdf、excel、word、图片等文件的功能。 介绍&#xff1a;支持pdf、xlsx、docx、jpg、png、jpeg。 以下使用Vue3代码实现所有功能&#xff0c;建议以下的预览文件标签可以在外层包裹一层弹窗。 图片预览 iframe标签能够将另一个HTML页面嵌入到…

openGauss学习笔记-242 openGauss性能调优-SQL调优-典型SQL调优点-SQL自诊断

文章目录 openGauss学习笔记-242 openGauss性能调优-SQL调优-典型SQL调优点-SQL自诊断242.1 SQL自诊断242.1.1 告警场景242.1.2 规格约束 openGauss学习笔记-242 openGauss性能调优-SQL调优-典型SQL调优点-SQL自诊断 SQL调优是一个不断分析与尝试的过程&#xff1a;试跑Query&…

操作系统(AndroidIOS)图像绘图的基本原理

屏幕显示图像的过程 我们知道&#xff0c;屏幕是由一个个物理显示单元组成&#xff0c;每一个单元我们可以称之为一个物理像素点&#xff0c;而每一个像素点可以发出多种颜色。 而图像&#xff0c;就是在不同的物理像素点上显示不同的颜色构成的。 像素点的颜色 像素的颜色是…

HTML5、CSS3面试题(二)

上一章:HTML5、CSS3面试题&#xff08;一&#xff09; 哪些是块级元素那些是行内元素&#xff0c;各有什么特点 &#xff1f;&#xff08;必会&#xff09; 行内元素: a、span、b、img、strong、input、select、lable、em、button、textarea 、selecting 块级元素&#xff1…

一文解决Word中公式插入问题(全免费/latex公式输入/texsWord)

分文不花&#xff0c;搞定你的word公式输入/texsWord完全使用指南 背景 碎碎念&#xff1a;折折腾腾至少装了几个小时&#xff0c;遇到了若干大坑。遇到的问题网上都搜索不到答案&#xff01;&#xff01;&#xff01;就让我来当指路的小火柴吧。 本篇适用于在word中输入la…

使用Python进行自然语言处理(NLP):NLTK与Spacy的比较【第133篇—NLTK与Spacy】

使用Python进行自然语言处理&#xff08;NLP&#xff09;&#xff1a;NLTK与Spacy的比较 自然语言处理&#xff08;NLP&#xff09;是人工智能领域的一个重要分支&#xff0c;它涉及到计算机如何理解、解释和生成人类语言。在Python中&#xff0c;有许多库可以用于NLP任务&…

【设计模式】二、UML 类图与面向对象设计原则 之 UML概述

二、UML 类图与面向对象设计原则 &#xff08;一&#xff09;UML 类图 UML 概述类与类的UML图示类之间的关系 &#xff08;二&#xff09;面向对象设计原则 单一职责原则&#xff08;Single Responsibility Principle, SRP&#xff09;开闭原则&#xff08;Open-Closed Princip…

x86_64架构栈帧以及帧指针FP

文章目录 一、x86_64架构寄存器简介二、x86_64架构帧指针FP三、示例四、保存帧指针参考资料 一、x86_64架构寄存器简介 在x86架构中&#xff0c;有8个通用寄存器可用&#xff1a;eax、ebx、ecx、edx、ebp、esp、esi和edi。在x86_64&#xff08;x64&#xff09;扩展中&#xff…

基于检索增强的 GPT-3.5 的文本到 SQL 框架,具有样本感知提示和动态修订链。

文章目录 一、论文关键信息二、基础概念三、主要内容1. Motivations2. Insights3. 解决方案的关键4. 实验 四、总结与讨论 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、论文关键信息 论文标题&#xff1a;Retrieval-augmented GPT-3.5-based T…

港大提出图结构大语言模型:GraphGPT

1. 引言 图神经网络&#xff08;Graph Neural Networks&#xff09;已经成为分析和学习图结构数据的强大框架&#xff0c;推动了社交网络分析、推荐系统和生物网络分析等多个领域的进步。图神经网络的主要优势在于它们能够捕获图数据中固有的结构信息和依赖关系。利用消息传递…

Selenium 自动化 —— 入门和 Hello World 实例

Selenium 是什么 Selenium 是一个用于自动化网页浏览器操作的工具&#xff0c;它支持多种浏览器和多种操作系统。主要用于测试 web 应用程序的功能&#xff0c;也可用于执行一些基本的浏览器操作任务&#xff0c;例如自动化表单填写、网页导航等。 Selenium 是一个开源项目&a…

大米自动化生产线的运作原理与科技创新

在当今科技飞速发展的时代&#xff0c;自动化生产线已经成为各个行业提高效率、降低成本的重要工具。而在粮食产业中&#xff0c;大米的自动化生产线更是以其独特的魅力&#xff0c;引领着粮食加工业的转型升级。星派将带您深入了解大米自动化生产线的运作原理&#xff0c;以及…