MapReduce模型

  在并行计算领域最著名的就是MPI模型,MPI是一种消息传递编程模型,在大规模科学计算领域已经成功应用了数年,而MapReduce则是一种近几年出现的相对较新的并行编程技术,但是MapReduce计算模型也是建立在数学和计算机科学基础上的,实践已经证明这种并行编程模型具有简单、高效的特点,最为重要的两个概念就是Map和Reduce.最基本的处理思想就是“分而治之,然后归约”。Hadoop会将一个大任务分解为可以同时执行的多个小任务,从而达到并行计算的目的。举个简单的例子,对于一个大型任务,单机处理需要1024分钟,而分解为1024个子任务并行执行就可在1分钟完成处理:.在对处理的数据集的要求上,相比于传统关系数据库的结构化数据,MapReduce模型的Hadoop框架适合半结构化或非结构化的数据。

  Hadoop通过自动分割将要执行的问题(程序)、拆解成Map(映射)和Reduce(化简)的方式,其分解过程的实质是将问题分为几个部分,划分为可以应用于程序的数据,再将数据分解,然后对分解的数据进行并行操作,在自动分割后通过Map程序将数据映射成不相关的区块,分配(调度)给大星的i十算机进行处理以达到分散运算的效果,再通过Reduce程序将结果汇总整合,输出开发者需要的结果。  

  Hadoop向用户提供了一个规范化的MapReduce编程接口,用户只需要编‘写Map和Reduce函数,这两个函数都是运行在键-值对基础上的,数据的切分,节点之间的通信协调

等全部由Hadoop框架木身来负责。一般一个用户作业提交到Hadoop集群后会根据输入数据的大小井行启动多个Map进程及多个Reduce进程(也可以是0个或者1个)来执行.MapReduce也具有弹性适应性,小数据和大数据仅仅通过调整节点就可以处理,而不需要用户修改程序MapReduce模型处理流程如下图所示。

  上图就是MapReducc的数据处理流程图,在Map之前会对输入的数据有split的过程,默认split就是写人数据时的逻辑块,每一个块对应一个split,一个split就对应一个Map进程,正是split保证了任务的并行效率。在Map之后还会有shuffe和sort的过程.shuffle简单描述就是一个Map的输出应该映射到哪个Reduce作为输入,sort就是指在Map运行完输出后会根据输出的键进行排序。这两个处理步骤对于提高Reduce的效率及减小数据传输的压力有很大的帮助。
  从本质上讲MapReduce借鉴了函数式程序设计语言的设计思想,其软件实现是指定一个Map函数,把键值对(key/value)映射成新的键值对(key/value),形成一系列中间结果形式的键值对(key/value ),然后把它们传给Reduce(归约)函数,把具有相同中间形式key的value合并在一起。Map和Reduce。函数具有一定的关联性。其算法描述为:

  Map(k, v) ->list(k1,v1)
  Reduce(k1,list(v1)) ->list (v1)
  在Map过程中将数据并行,即把数据用映射函数规则分开,而Reduce则把分开的数据用归约函数规则合在一起,即Map是个分的过程,Reduce则对应着合。

_「,

时间: 2024-12-11 14:12:39

MapReduce模型的相关文章

MapReduce模型以及体系架构

1.Map-Reduce编程模型 以气象数据分析为例. 数据中每一行就是一个时间点采集的温度信息,现在要分析一年中的最高温度. Mapper思想:

Hadoop的MapReduce模型基本原理

参考: https://www.zybuluo.com/frank-shaw/note/206604 一.MapReduce数据处理流程 关于上图,可以做出以下逐步分析: 输入数据(待处理)首先会被切割分片,每一个分片都会复制多份到HDFS中.上图默认的是分片已经存在于HDFS中. Hadoop会在存储有输入数据分片(HDFS中的数据)的节点上运行map任务,可以获得最佳性能(数据TaskTracker优化,节省带宽). 在运行完map任务之后,可以看到数据并不是存回HDFS中,而是直接存在了本

MapReduce 计算模型

前言 本文讲解Hadoop中的编程及计算模型MapReduce,并将给出在MapReduce模型下编程的基本套路. 模型架构 在Hadoop中,用于执行计算任务(MapReduce任务)的机器有两个角色:一个是JobTracker,一个是TaskTracker,前者用于管理和调度工作,后者用于执行工作. 一般来说,一个Hadoop集群由一个JobTracker和N个TaskTracker构成. 执行流程 每次计算任务都可以分为两个阶段,Map阶段和Reduce阶段. 其中,Map阶段接收一组键值

从 WordCount 到 MapReduce 计算模型

概述 虽然现在都在说大内存时代,不过内存的发展怎么也跟不上数据的步伐吧.所以,我们就要想办法减小数据量.这里说的减小可不是真的减小数据量,而是让数据分散开来.分开存储.分开计算.这就是 MapReduce 分布式的核心. 版权说明 著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 本文作者:Coding-Naga 发表日期: 2016年5月10日 本文链接:http://blog.csdn.net/lemon_tree12138/article/details/513677

MapReduce分布编程模型之函数式编程范式

导读: 计算机科学是算法与算法变换的科学,算法是计算机科学的基石. 任何一个计算问题的分析与建模,几乎都可以归为算法问题. MapReduce算法模型是由Google公司针对大规模群组中的海量数据处理而提出的分布编程模型,主要应用于大规模数据集{大于1TB}的分布并行运算. 在MapReduce模型中的Map{映射}和Reduce{化简}创意来自函数型编程语言,同是也继承了向量型编程语言的特性. MapReduce模型能够使程序员在不了解分布式并行编程的情况下,将自己书写的程序在分布式系统上运行

mapreduce工作原理

转自:http://www.cnblogs.com/z1987/p/5055565.html MapReduce模型主要包含Mapper类和Reducer类两个抽象类.Mapper类主要负责对数据的分析处理,最终转化为key-value数据对:Reducer类主要获取key-value数据对,然后处理统计,得到结果.MapReduce实现了存储的均衡,但没有实现计算的均衡. 一. MapReduce框架组成 MapReduce主要包括JobClient.JobTracker.TaskTracke

从BSP模型到Apache Hama

? 什么是BSP模型 概述 BSP(Bulk Synchronous Parallel,整体同步并行计算模型)是一种并行计算模型,由英国计算机科学家Viliant在上世纪80年代提出.Google发布的一篇论文(<Pregel: A System for Large-Scale Graph Processing>)使得这一概念被更多人所认识,据说在Google 80%的程序运行在MapReduce上,20%的程序运行在Pregel上.和MapReduce一样,Google并没有开源Pregel

MapReduce Shuffle过程详解

Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方.要想理解MapReduce,Shuffle是必须要了解的.我看过很多相关方面的资料,但每次看完都云里雾里的绕着,很难理清大致的逻辑,反而越搅越乱.前端时间在做MapReduce job性能调优的工作,需要深入代码研究MapReduce的运行机制,这才对Shuffle探了个究竟.考虑到之前我在看相关资料而看不懂时很恼火,所以在这里我尽最大的可能试着把Shuffle说清楚,让每一位想了解它原理的朋友都能有所收获.如果你对这篇文章有

hadoop之MapReduce WordCount分析

MapReduce的设计思想 主要的思想是分而治之(divide and conquer),分治算法. 将一个大的问题切分成很多小的问题,然后在集群中的各个节点上执行,这既是Map过程.在Map过程结束之后,会有一个Ruduce的过程,这个过程即将所有的Map阶段产出的结果进行汇集. 写MapReduce程序的步骤: 1.把问题转化为MapReduce模型 2.设置运行的参数 3.写map类 4.写reduce类 例子:统计单词个数 将文件拆分成splits,每个文件为一个split,并将文件按