Map-Reduce原理

Map-Reduce

Map-Reduce是由Google在2004年提出的大数据并行编程架构。分为Map(映射)和Reduce(化简)两个步骤。因此得名。它隐藏并行化、容错、数据分布、负载均衡等细节,能够搭建在普通PC上,程序猿能够非常方便完毕大数据并行编程。

并行运算的效率

  • 假如使用1个处理器花费T1时长能够完毕任务,而使用了p个处理器须要Tp时长。

    那么加速比为:S(Speeup) = T1/Tp,效率为:E = S/p = T1 / (p Tp)
  • 一般效率都小于1,并且p越大效率越低,可是在数据集增大时。效率会对应的有所提高。

传统的并行处理架构

数据并行架构:共享内存-切割任务

  • 内存(数据)是共享的,把任务分为p个部分,分别由p个处理器完毕。为防止冲突。每一个处理器都要在開始工作时对使用的数据段加锁,以堵塞其它任务使用这一数据段。任务完毕之后。才会解锁。
  • 非常显然,假设p个处理器同一时候对不同的数据段进行处理。效率是非常高的。但假设有冲突,就会带来额外的通信开销,减少效率。

消息传递架构:消息传递-切割数据

  • 如MPI和PVM。
  • 消息传递机制把数据分为p个数据段,p个CPU分别使用一个数据段完毕相同的任务。
  • 这样的方式的问题是。一个CPU的运算须要使用还有一个CPU的运算结果以完毕下一步的任务。这样,它们之间就须要交换数据。
  • 这个问题使得消息传递架构比数据并行架构更复杂。但消息传递架构更具有可扩展性。比方在数千个CPU的情况下,降低冲突是非常难做到的。

除了上述两种方式外,共享内存-切割数据和消息传递-切割任务也是能够的。

Map-Reduce架构

  • Map-Reduce是一种抽象的消息传递。及数据并行化的架构。
  • 如图所看到的,左方为代处理数据集,右方为处理结果数据集。图中圆角矩形代表map和reduce节点,每一个相应一台电脑。
  • Map函数把输入数据中的一个key/value对(k1,v1)映射为一组暂时key/value对(k2,v2)。

    每一个key/value对都是被独立操作的。并且没有改动原始数据。因此Map操作是能够高度并行的。如图示map1、map2……mapM。
  • Reduce函数接收键为特定的k2的一组暂时key/value对,并合并这些结果得到终于结果(k2,v3),这里键值k2是不变的。

    如图示reduce1,reduce2……reduceR。

    相对来说实现并行要难一些。

  • 除了这两个函数之外,还须要做一些额外工作。
    • 每一个Reduce节点仅仅接收键固定的暂时key/value对,平台要依据暂时key/value对的键把key/value对送至对应的Reduce节点。
    • 暂时key/value对的读写工作量也相当大。

Word counting

Word counting指的是给出一系列文档。统计全部单词的词频。Word counting就是Map-Reduce的Hello word!。

  • 输入数据:(k1,v1),k1是文档id,v1是文档内容,即图中的(d1,"w1w2w4")。d1代表文档id,w1代表一个单词
  • Map函数:从文档中每读入一个单词。就产生一个暂时key/value对,即图中左边一列灰色宽箭头
  • 暂时元素:(k2,v2),k2是单词,v2是单词出现次数。即图中的第二列(w1,2)
  • Reduce函数:接收全部具有同一个k2的暂时key/value对,对v2求和得到v3,即图中右边一列灰色宽箭头
  • 输出结果:(k2,v3)。v3是全部文档中单词k2的词频数

转载请注明作者:Focustc,博客地址为http://blog.csdn.net/caozhk 。原文链接为点击打开

时间: 2024-11-25 08:53:00

Map-Reduce原理的相关文章

用通俗易懂的大白话讲解Map/Reduce原理

Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰富,包括ZooKeeper,Pig,Chukwa,Hive,Hbase,Mahout,flume等. 这里详细分解这里面的概念让大家通过这篇文章了解到底是什么hadoop: 1.什么是Map/Reduce,看下面的各种解释: (1)MapReduce是hadoop的核心组件之一,hadoop要分布式

Map/Reduce工作原理

上图是论文里给出的流程图.一切都是从最上方的user program开始的,user program链接了MapReduce库,实现了最基本的Map函数和Reduce函数.图中执行的顺序都用数字标记了. 1.MapReduce库先把user program的输入文件划分为M份(M为用户定义),每一份通常有16MB到64MB,如图左方所示分成了split0~4:然后使用fork将用户进程拷贝到集群内其它机器上. 2.user program的副本中有一个称为master,其余称为worker,ma

第四课:Yarn和Map/Reduce配置启动和原理讲解

前三节课主要讲了hdfs,hdfs就是一个分鱼展的大硬盘 分:分块 鱼:冗余 展:动态扩展 接下来讲云计算,也可以理解为分布式计算,其设计原则: 移动计算,而不是移动数据 前面说过,hadoop由hdfs,yarn,map/reduce组成, 而yarn(Yet Another Resource Negotiator)是资源调度系统,yarn调配的是内存和cpu,不参入计算. map/reduce是计算引擎. (1)配置yarn yarn由一台resourceManager和n台dataMana

Hadoop学习:Map/Reduce初探与小Demo实现

一.    概念知识介绍 Hadoop MapReduce是一个用于处理海量数据的分布式计算框架.这个框架攻克了诸如数据分布式存储.作业调度.容错.机器间通信等复杂问题,能够使没有并行 处理或者分布式计算经验的project师,也能非常轻松地写出结构简单的.应用于成百上千台机器处理大规模数据的并行分布式程序. Hadoop MapReduce基于"分而治之"的思想,将计算任务抽象成map和reduce两个计算过程,能够简单理解为"分散运算-归并结果"的过程.一个 M

分布式基础学习(2)分布式计算系统(Map/Reduce)

二. 分布式计算(Map/Reduce) 分 布式式计算,同样是一个宽泛的概念,在这里,它狭义的指代,按Google Map/Reduce框架所设计的分布式框架.在Hadoop中,分布式文件 系统,很大程度上,是为各种分布式计算需求所服务的.我们说分布式文件系统就是加了分布式的文件系统,类似的定义推广到分布式计算上,我们可以将其视为增 加了分布式支持的计算函数.从计算的角度上看,Map/Reduce框架接受各种格式的键值对文件作为输入,读取计算后,最终生成自定义格式的输出文件. 而从分布式的角度

Map/Reduce个人实战--生成数据测试集

背景: 在大数据领域, 由于各方面的原因. 有时需要自己来生成测试数据集, 由于测试数据集较大, 因此采用Map/Reduce的方式去生成. 在这小编(mumuxinfei)结合自身的一些实战经历, 具体阐述下生成测试数据集的Map/Reduce程序该如何写? 场景构造: 假设某移动电信行业的某具体业务, 其记录了通话信息(包括拨打方/接听方/通话时间点/基站 等要素). 产商是不可能提供真实的用户数据用于测试的, 但提供了基本的数据规格. 具体针对该业务场景, 我们简单规划如下: num1 v

hadoop学习WordCount+Block+Split+Shuffle+Map+Reduce技术详解

转自:http://blog.csdn.net/yczws1/article/details/21899007 纯干货:通过WourdCount程序示例:详细讲解MapReduce之Block+Split+Shuffle+Map+Reduce的区别及数据处理流程. Shuffle过程是MapReduce的核心,集中了MR过程最关键的部分.要想了解MR,Shuffle是必须要理解的.了解Shuffle的过程,更有利于我们在对MapReduce job性能调优的工作有帮助,以及进一步加深我们对MR内

生动有趣地讲解Map/Reduce基本原理

Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰富,包括ZooKeeper,Pig,Chukwa,Hive,Hbase,Mahout,flume等. 这里详细分解这里面的概念让大家通过这篇文章了解到底是什么hadoop: 1.什么是Map/Reduce,看下面的各种解释: (1)MapReduce是hadoop的核心组件之一,hadoop要分布式

Hadoop简介(1):什么是Map/Reduce

看这篇文章请出去跑两圈,然后泡一壶茶,边喝茶,边看,看完你就对hadoop整体有所了解了. Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰富,包括ZooKeeper,Pig,Chukwa,Hive,Hbase,Mahout,flume等. 这里详细分解这里面的概念让大家通过这篇文章了解到底是什么hadoop: 1.什么是Map/Reduce,看

MapReduce剖析笔记之三:Job的Map/Reduce Task初始化

上一节分析了Job由JobClient提交到JobTracker的流程,利用RPC机制,JobTracker接收到Job ID和Job所在HDFS的目录,够早了JobInProgress对象,丢入队列,另一个线程从队列中取出JobInProgress对象,并丢入线程池中执行,执行JobInProgress的initJob方法,我们逐步分析. public void initJob(JobInProgress job) { if (null == job) { LOG.info("Init on