分布式数据处理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.hqwc.cn/news/538996.html

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

相关文章

SE园区综合实验(未补齐版)

实验要求&#xff1a; 1.局域网存在vlan10和vlan20两个业务vlan&#xff0c;ip网段分别对应192.168.1.0/24和192.168.2.0/24 2.业务vlan可以在所有链路上传输数据 3.sw1和sw2之间的直连链路上配置静态链路聚合实现链路冗余&#xff0c;并提高链路带宽 4.sw3为某接入点二次交…

windows批处理脚本(cmd指令)

一、简介 最早期的电脑系统是DOS系统&#xff0c;DOS系统只有一个黑漆漆的窗口&#xff0c;需要自己输入命令&#xff0c;所以学习命令是很有必要的&#xff0c;那么CMD命令大全是什么?直到今天的Windows系统&#xff0c;还是离不开DOS命令的操作。如今懂得使用windows批处理脚…

ThreadLocal基本原理

ThreadLocal基本原理 一、定义 ThreadLocal是java中所提供的线程本地存储机制&#xff0c;可以利用改机制将数据缓存在线程内部&#xff0c;该线程可以在任意时刻、任意方法中获取数据 二、底层原理 ThreadLocal底层是通过ThreadLocalMap来实现的&#xff0c;每个Thread对象中…

搭建Docker私有仓库registry

下载registry registry是Docker官方提供的仓库镜像 拉取镜像&#xff0c;不指定版本默认拉取最新版本镜像。 docker pull registry Using default tag: latest latest: Pulling from library/registry 79e9f2f55bf5: Pull complete 0d96da54f60b: Pull complete 5b27040df4…

linux环境基础开发工具2(gcc/g++ 、 make/ Makefile)

目录 Linux编译器-gcc/g使用 Linux项目自动化构建工具-make/Makefile Linux编译器-gcc/g使用 1. 背景知识 1.2 gcc/g -v 查看当前服务器的编译器版本 1.3 安装gcc / g sudo yum install -y gcc-c 1.4 预处理 -> 编译 -> 汇编 -> 链接 [wxqVM-4-9-centos Test]$ to…

cesium wall 扩散墙(动态立体墙效果 Primitive 方法)

cesium wall 扩散墙(动态立体墙效果)以下为源码直接复制可用 1、实现思路 1、此效果运用cesium 中 Primitive 方法,通过传入中心点、半径、顶点数、颜色来进行加载。 2、运用 Math 方法 对传进来的中心点、半径、定点数,来计算个顶点经纬度。 3、通过Primitive 方法中upda…

漏洞复现-锐捷Ruijie系列

漏洞复现-锐捷Ruijie 绕过身份验证锐捷EG易网关 Admin/admin锐捷EG2000GE存在命令执行漏洞锐捷网络股份有限公司校园网自助服务系统存在目录穿越漏洞ruijie-eg-guestisup-ip-rce.yml🗡锐捷RG-UAC应用网关前台RCE数据库审计系统存在后台 downloadTcpDumpFiles⽂件读取锐捷交换…

整数序列删除指定数字,其他数顺序不变

#include <stdio.h>//整数序列删除一个数&#xff0c;其他数顺序不变 int main() {int arr[50] {0};//int arr[50] {1,2,3,4,5};int n 0;int del 0;int i 0;int j 0;scanf("%d",&n);for(i 0;i < n;i)scanf("%d",&arr[i]);scanf(&q…

Win11系统启动VMware上虚拟机蓝屏解决办法

背景 最近有在做一个项目的过程中需要使用虚拟机&#xff0c;用原来装好的的Vmware14打开虚拟机&#xff0c;直接蓝屏了&#xff0c;尝试了如下几种方法来解决&#xff0c;最好用的就是第二种&#xff0c;直接下载最新版本(在软件管家中直接下载)。 虚拟机 目前常用的虚拟机软…

【MySQL】深入解析索引实现原理

文章目录 1、索引介绍2、索引分类2.1、数据结构HashB Tree 2.2、存储方式聚簇索引非聚簇索引 2.3、功能特性主键索引唯一索引普通索引 2.4、字段数量单列索引多列索引 3、最佳实践3.1、索引覆盖3.2、回表操作3.3、最左匹配原则3.4、索引下推 1、索引介绍 对于MySQL数据库来说…

ADCSsync:基于ESC1执行DCSync技术和哈希转储的强大工具

关于ADCSsync ADCSsync是一款功能强大的临时性DCSync技术测试工具&#xff0c;该工具基于ESC1实现其功能&#xff0c;虽然该工具在运行速度方面没有优势&#xff0c;但ADCSsync能够在不使用DRSUAPI或卷影副本的情况下有效地执行临时DCSync攻击技术测试。 ADCSsync使用了ESC1从…

影响MySql 服务性能最重要的两个参数。

不同的需求&#xff0c;不同服务器硬件配置&#xff0c;要想MySql 服务处于最优状态是需要调试一些参数的&#xff0c;可调的参数非常多&#xff0c;在看完官方的mysql的文档&#xff0c;结合以前的配置情况在这里选择影响性能最大的参数作介绍&#xff1a; 先查一下参数情况&…