首页 > 其他分享 >2.MapReduce论文总结

2.MapReduce论文总结

时间:2024-08-25 18:29:48浏览次数:10  
标签:总结 map worker 论文 reduce MapReduce 任务 Master key

一. 介绍

  1. 很多业务逻辑很简单,主要难点是数据量太大,可使用分布式处理提高速度。
  2. 传统分布式程序,计算逻辑和分布式任务分发、故障恢复混在一起,原本简单的计算逻辑变得模糊不清,难以处理。
  3. MapReduce将两者分离,任务分发,容错,恢复等逻辑由模型完成,程序员只需要专注计算逻辑。大大了简化代码架构,减轻开发人员工作难度。

二. 模型概述

  1. Map/Reduce函数由用户编写
  2. Map函数负责处理输入的k/v对,生成中间态k/v对
  3. 之后发送出去,按照Key值进行分组,不同Key值的数据发送到不同的Reduce中
  4. Reduce函数接收中间态的值并进行聚合,最终输出自己负责的Key值的结果

示例

// key: document name
// value: document contents
map(String key, String value):
    for each word w in value:
        EmitIntermediate(word,"1");

// key: a word
// values: a list of counts
reduce(String key, Iterator values):
    int result = 0;
    for each v in values:
        result += ParseInt(v);
    Emit(AsString(result));
  • map函数对一行字符串进行分解,生成(word,1)的KV对
  • reduce函数累加每一个单词的出现计数,等到所有数据处理完毕,就可以得到结果

三. 实现

将输入的数组分割为M份

通过一个分区函数将中间态的值划分为R组(例如: hash(key) mod R

1 执行概述

执行概述.png
  1. 将输入文件拆分为M份,通常每份大小为16MB至64MB(可配置)
  2. 在集群中的一组机器上启动多个程序的副本,只有一个master。剩下的都是worker,workermaster分配任务
  3. 现有M个map任务和R个reduce任务。master选择空闲的worker,分配mapreduce任务
  4. map worker从输入数据中解析K/V对,并将kv对传递给用户自定义的map函数。从而产生中间态K/V对,然后缓存在内存中。
  5. 缓存中的K\V对会被周期性地写入本地磁盘,通过分区函数将其划分到R个区域中。这些缓存所在的磁盘的位置会被发送给master,master将这些位置信息转发给reduce worker。
  6. reduce worker获得位置信息后,会通过RPC从map worker的本地磁盘读取缓冲数据。当reduce worker读完所有的中间数据后,它会根据key值进行排序,从而将key值相同的数组放在同一组。排序是必需的,因为通常会有很多不同的key映射到同一个reduce任务。如果中间数据量太大,无法放入内存中,则可使用外部排序。
  7. reduce worker遍历已排序的中间数据,对于每个Key,它将该Key和与之对应的中间值集合传递给用户的reduce函数。Reduce函数产生结果,写入到这个Reduce的结果输出文件中。
  8. 当所有map和reduce任务都完成后,master唤醒用户程序。此时,用户程序中对MapReduce调用,就会获得结果。

成功完成后,结果会被存放在R个输出文件中(每个reduce任务对应一个输出文件,文件名由用户指定)。通常不需要将这R个输出文件合并为一个文件 — 通常这些文件会作为输入传递给下一阶段的MapReduce。

2.Master的数据结构

Master中维护一些信息:

  • 每个任务的状态
  • 所有worker机器的标识
  • map生成的R个中间态文件所在的位置和大小

master会将map生成的中间态文件位置和大小信息以增量的方式持续推送给运行中的reduce Worker。

3. 容错

Worker Failure

Master 周期性ping worker,一段时间没有响应:

  • 标记此worker失败,该worker负责的任务都会被重置为初始状态,调度去其他worker重新执行

  • 已完成的map任务在故障后需重新执行,因为map的输出存储在故障机器的本地磁盘,无法访问。而已完成的reduce任务不需要重复执行,因为它们的输出存储在全局文件系统中

  • 通知reduce任务,A断线了,之后从B读取数据

Master Failure

  • 重启

4. Locality

网络传输耗时,减少网络传输,优先将map任务分配到距离输入数据主机物理距离较近的地方。

5. Task Granularity(任务粒度)

  • M和R的值都应远大于worker机器的数量

6.Backup Tasks(备份执行)

解决掉队者问题,一台机器花费了异常长的时间去完成最后的几个map或reduce任务

当MapReduce只剩最后几个任务时,调度剩余任务到多个节点同时执行,最后无论是主节点还是备份节点执行完成,任务都将被视为完成

四.每个组件的任务

1.Master

1.1 执行需要的参数

  1. 要处理的任务类型
  2. 待处理的文件列表

1.2 分发任务

分发任务给可处理对应任务的worker, 记录发给worker对应的文件名

监听

监听worker状态,如果2S没完成,就标记为Dead,重新分发这个文件到其他空闲worker

执行完成

执行完成后,worker将消息传回Master,Master进行接收,然后按Key进行分发,如果是旧Key就发给对应的Reduce worker,反之就采用轮询,将对应任务发给下一个Reduce worker

心跳

worker每10S和Master进行心跳连接

2. Worker

2.1 启动时参数

  1. Master地址

2.2 心跳

每10S和Master进行一次心跳

2.3 接收Master任务

  1. 任务类型

  2. 要处理的文件名

  3. 输出结果

标签:总结,map,worker,论文,reduce,MapReduce,任务,Master,key
From: https://www.cnblogs.com/INnoVationv2/p/18379263

相关文章

  • Lab 1: MapReduce
    Lab1:MapReduce目标:实现一个MapReduce系统。其中包含:worker进程:调用Map和Reduce程序并处理文件的读写coordinator进程:负责将任务分发给worker并处理失败的worker。(注:本Lab使用coordinator而不是论文的master进行管理。)Gettingstartedsrc/main/mrsequential.go中提供......
  • 202408 总结
    NOIP20240801NOIP20240802NOIP20240803NOIP20240804NOIP20240805NOIP20240806NOIP20240807NOIP20240808NOIP20240809ICPC20240814ICPC20240815NOIP20240816NOIP20240818NOIP20240819NOIP20240820NOIP20240821......
  • Graphics2D绘图方法总结
    一、简介在开发中可能会遇到这样一类场景,业务复杂度不算太高,技术难度不算太深,但是做起来就很容易把人整破防,伤害很高侮辱性很强的:绘图。绘图最怕有人挑刺:这里变形,那里不对,全图失真。最近在处理这样一个场景,使用Java的Graphics2D类,绘制业务需要的图形模板,然后在具体流程中填充数......
  • 基于django+vue摄影网站的设计与实现【开题报告+程序+论文】计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和普及,数字化摄影已成为大众生活的一部分,摄影作品的传播与分享方式也发生了深刻变革。传统的摄影展示与交易方式......
  • 基于django+vue摄影爱好者交流平台【开题报告+程序+论文】计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着数字技术的飞速发展,摄影艺术已不再是专业摄影师的专属领地,越来越多的普通民众也加入了摄影爱好者的行列。他们热衷于捕捉生活中的美好......
  • 基于django+vue社团管理系统【开题报告+程序+论文】计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育的普及和学生自主性的增强,校园社团作为培养学生综合素质、促进文化交流的重要平台,其数量与种类日益增多。然而,传统的手工管理......
  • 基于python+flask框架的社区团购平台(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和智能设备的普及,电子商务已渗透到人们生活的方方面面,社区团购作为一种新兴的电商模式,近年来迅速崛起并受到广泛......
  • JS中数组去重方法总结
    在JavaScript中,数组去重是一个常见的操作,目的是移除数组中的重复元素,确保数组中每个元素都是唯一的。以下是几种常用的数组去重方法,分别适用于不同的情况:1.使用Set对象Set是ES6引入的新数据结构,它类似于数组,但其中的每个值都是唯一的。利用这一特性,可以很容易地去重......
  • 基于python+flask框架的基于推荐系统的电影网站系统小程序前端(开题+程序+论文) 计算机
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在数字化时代,互联网已成为人们获取信息和娱乐的主要途径之一,电影作为大众喜爱的文化消费形式,其在线观看和推荐需求日益增长。随着电影产业......
  • 基于python+flask框架的基于WEB的咖啡销售系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在快节奏的现代生活中,咖啡已成为许多人日常生活中不可或缺的饮品,不仅因为其独特的口感和提神醒脑的功效,更因其承载了社交、休闲等多种文化......