首页 > 其他分享 >MapReduce原理浅析(转)

MapReduce原理浅析(转)

时间:2023-07-21 19:33:58浏览次数:47  
标签:Map 函数 结果 Reduce MapReduce 任务 原理 浅析


MapReduce原理浅析

 



-------------------------每天学习一点点^_^-------------------------- 一个简单的应用了Map/Reduce模式的例子:http://wiki.apache.org/hadoop/WordCount

    用 Mapeduce 来处理大数据集的过程, 这个 MapReduce 的计算过程简而言之,就是将大数据集分解为成百上千的小数据集,每个(或若干个)数据集分别由集群中的一个结点(一般就是一台普通的计算机)进行处理并生成中间结果,然后这些中间结果又由大量的结点进行合并, 形成最终结果。

 计算模型的核心是 Map 和 Reduce 两个函数,这两个函数由用户负责实现,功能是按一定的映射规则将输入的 <key, value> 对转换成另一个或一批 <key, value> 对输出。

                                表 Map 和 Reduce 函数

函数

输入

输出

说明

Map

<k1, v1>

List(<k2,v2>)

1. 将小数据集进一步解析成一批 <key,value> 对,输入 Map 函数中进行处理。 

2. 每一个输入的 <k1,v1> 会输出一批 <k2,v2>。 <k2,v2> 是计算的中间结果。

Reduce

<k2,List(v2)>

<k3,v3>

输入的中间结果 <k2,List(v2)> 中的 List(v2) 表示是一批属于同一个 k2 的 value

程序员的主要编码工作就是实现 Map 和 Reduce 函数,其它的并行编程中的种种复杂问题,如分布式存储,工作调度,负载平衡,容错处理,网络通信等,均由 MapReduce 框架(比如 Hadoop )负责处理,程序员完全不用操心。

本地计算

,“本地计算”是最有效的一种节约网络带宽的手段,业界把这形容为“移动计算比移动数据更经济”。

任务粒度

本地计算。有 M 个小数据集待处理,就启动 M 个 Map 任务,注意这 M 个 Map 任务分布于 N 台计算机上并行运行,Reduce 任务的数量 R 则可由用户指定。

Partition

划分时通常使用 hash 函数,如: hash(key) mod R,这样可以保证某一段范围内的 key,一定是由一个 Reduce 任务来处理,可以简化 Reduce 的过程。

Combine

Combine 能够减少中间结果中 <key, value> 对的数目,从而减少网络流量。

Reduce 任务从 Map 任务结点取中间结果

注意所有的 Map 任务产生中间结果均按其 Key 用同一个 Hash 函数划分成了 R 份,R 个 Reduce 任务各自负责一段 Key 区间。每个 Reduce 需要向许多个 Map 任务结点取得落在其负责的 Key 区间内的中间结果,然后执行 Reduce 函数,形成一个最终的结果文件。

任务管道

   有 R 个 Reduce 任务,就会有 R 个最终结果,很多情况下这 R 个最终结果并不需要合并成一个最终结果。因为这 R 个最终结果又可以做为另一个计算任务的输入,开始另一个并行计算任务。

 

 

 

 

 



 

标签:Map,函数,结果,Reduce,MapReduce,任务,原理,浅析
From: https://blog.51cto.com/u_16200746/6805132

相关文章

  • springboot原理
    SpringApplication.run()执行流程:1.初始化监听器、自定义监听器。2.发布ApplicationStartedEvent事件(监听ApplicationStartedEvent方法:1、实现ApplicationStartedEvent  2、SpringApplication.addListener())3.装配参数和环境,确定是web环境还是非web环境。4.装配完环境后,......
  • GPIO工作原理
     有FT的引脚,表示可接受5V电压。1.1GPIO工作方式参考帖子:https://blog.csdn.net/k666499436/article/details/123845466?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168957959916800182714620%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D......
  • 线性模型(linear model)基本定义及参数求解数学本质、损失函数的选择与评估数学原理、及
    线性模型(linearmodel)基本定义及参数求解数学本质、损失函数的选择与评估数学原理、及其基于线性模型衍生的其他机器学习模型相关原理讨论1.线性模型简介0x1:线性模型的现实意义在一个理想的连续世界中,任何非线性的东西都可以被线性的东西来拟合(参考Taylor......
  • 计算凸多边形的重叠面积(原理解析)
    版权声明:遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。参考文章:https://blog.csdn.net/xuyin1204/article/details/107768030本文主要是参考了CSDN博主xuyin1204关于计算两个多边形的重叠面积的文章,并做了原理的相关分析。代码放在文末首先将两个多边形分解为......
  • Discuz x3 UCenter实现同步登陆原理
    1、Discuzx3的登录页面URL是:/member.php?mod=logging&action=login2、这个登录页面,登录提交的地址是:<formmethod="post"autocomplete="off"name="login"id="loginform_LKsWY"class="cl"onsubmit="pwdclear=1;ajaxpo......
  • vue学习——vuex工作原理+vuex环境搭建
        vuex在index.js里引入,没在main.js里引入是因为vuex的使用必须在store之前,单纯的把Vue.use(Vuex)放在importstoreform"../store"之前并不会生效,因为执行的时候会扫描整个文件,把import都放置在一起先执行,所以单纯的移动位置没有效果所以把vuex的使用放在了inde......
  • 由浅入深:Stable-Diffusion 原理解析01 —— 基本概念的介绍
    由浅入深:Stable-Diffusion原理解析01——基本概念的介绍由于实习工作需要,最近一段时间的学习,自己也对Stable-Diffusion有了一些基础的理解,在学习和阅读论文的过程中,发现信息比较碎片化,于是决定产出一个SD原理的系列解析。本系列相比于本人之前的代码阅读系列没那么“硬核......
  • 一文带你读懂Arthas实现原理
    一.前言Arthas相信大家已经不陌生了,肯定用过太多次了,平时说到Arthas的时候都知道是基于JavaAgent的,那么他具体是怎么实现呢,今天就一起来看看。首先Arthas是在GitHub开源的,我们可以直接去GitHub上获取源码:Arthas。本文基于Arthas3.6.7版本源码进行分析,具体源码注......
  • Raid0、Raid1、Raid5、Raid6、Raid10、Raid50、Raid60的原理、特点、性能区别
    一.RAID是什么?RAID(RedundantArrayofIndependentDisks)即独立磁盘冗余阵列,简称为「磁盘阵列」,其实就是用多个独立的磁盘组成在一起形成一个大的磁盘系统,从而实现比单块磁盘更好的存储性能和更高的可靠性。二.RAID有哪些?RAID方案常见的可以分为:RAID0RAID1RAID5RAID6......
  • 语言模型的预训练[6]:思维链(Chain-of-thought,CoT)定义原理详解、Zero-shot CoT、Few-s
    大语言模型的预训练[6]:思维链(Chain-of-thought,CoT)定义原理详解、Zero-shotCoT、Few-shotCoT以及在LLM上应用1.思维链定义背景在2017-2019年之间,随着Transformer模型的提出,计算资源与大规模语料库不断出现,自然语言处理领域发生了翻天覆地的变化,传统的全监督学习的范......