Google MapReduce编程模型与大规模数据处理

5星 · 超过95%的资源 需积分: 10 10 下载量 178 浏览量 更新于2024-07-24 收藏 571KB PDF 举报
"Google+MapReduce中文版" MapReduce是由Google提出的用于处理和生成大规模数据集的编程模型。它简化了分布式计算的过程,让开发者能够专注于业务逻辑,而无需深入理解底层的并行处理和分布式系统细节。MapReduce的核心概念包括两个主要函数:Map和Reduce。 1、Map阶段 Map函数是MapReduce流程的第一步,它接收输入数据集,通常是键值对的形式,然后将其转换为一系列新的中间键值对。这个阶段的特点是并行性,因为每个Map任务都可以独立运行,处理输入数据的不同部分。Map函数可以应用于集群中的任何节点,负责将原始数据转化为可供Reduce阶段处理的格式。 2、Shuffle和Sort 在Map任务完成后,系统会对中间键值对进行分区、排序和归并。这个过程称为Shuffle和Sort,确保相同键的值会被聚集在一起,为接下来的Reduce阶段做准备。 3、Reduce阶段 Reduce函数紧接着Map阶段,它的任务是对Map阶段产生的中间键值对进行聚合。Reduce函数接收一组具有相同中间键的值,并将它们整合为一个新的单一输出值。这个过程可以用于计算总计、求和、统计频率等操作。Reduce阶段同样可以在多台机器上并行执行,以提高处理速度。 4、容错机制 MapReduce框架内置了容错机制,可以自动处理节点故障。如果某个节点在执行任务时失败,系统会重新分配该任务给其他健康的节点,确保整个计算过程的连续性。 5、HDFS集成 MapReduce通常与Hadoop分布式文件系统(HDFS)结合使用,HDFS提供数据存储和分布式访问。Map任务会在数据所在节点上本地执行,减少数据在网络中的传输,提升效率。 6、适用场景 MapReduce广泛应用于数据处理任务,例如搜索引擎的索引构建、日志分析、数据挖掘和机器学习。在Google,数百个MapReduce程序每天都在运行,处理PB级别的数据。 7、易用性 MapReduce的设计目标之一就是简化分布式计算的复杂性。通过抽象出Map和Reduce这两个基本操作,程序员可以使用熟悉的编程语言(如Java)编写应用程序,而无需具备并行计算或分布式系统的专业知识。 8、可扩展性 MapReduce模型允许程序在大规模的集群上运行,可以动态调整资源,以适应不同规模的计算需求。一个常见的MapReduce计算可能涉及数千台机器,处理TB级的数据。 总结来说,MapReduce是处理大数据的一种强大工具,它通过将复杂的数据处理任务分解为可并行执行的Map和Reduce任务,简化了分布式计算的实现,使得程序员能够更专注于业务逻辑,而不是底层的系统管理。
2013-04-29 上传
MapReduce是一个编程模型,也是一个处理和生成超大数据集的算法模型的相关实现。用户首先创建 一个Map函数处理一个基于key/value pair的数据集合,输出中间的基于key/value pair的数据集合;然 后再创建一个Reduce函数用来合并所有的具有相同中间key值的中间value值。现实世界中有很多满足 上述处理模型的例子,本论文将详细描述这个模型。 MapReduce架构的程序能够在大量的普通配置的计算机上实现并行化处理。这个系统在运行时只关 心:如何分割输入数据,在大量计算机组成的集群上的调度,集群中计算机的错误处理,管理集群中计 算机之间必要的通信。采用MapReduce架构可以使那些没有并行计算和分布式处理系统开发经验的程 序员有效利用分布式系统的丰富资源。 我们的MapReduce实现运行在规模可以灵活调整的由普通机器组成的集群上:一个典型 的MapReduce计算往往由几千台机器组成、处理以TB计算的数据。程序员发现这个系统非常好用:已 经实现了数以百计的MapReduce程序,在Google的集群上,每天都有1000多个MapReduce程序在执 行。 1、介绍 在过去的5年里,包括本文作者在内的Google的很多程序员,为了处理海量的原始数据,已经实现了数 以百计的、专用的计算方法。这些计算方法用来处理大量的原始数据,比如,文档抓取(类似网络爬虫 的程序)、Web请求日志等等;也为了计算处理各种类型的衍生数据,比如倒排索引、Web文档的图 结构的各种表示形势、每台主机上网络爬虫抓取的页面数量的汇总、每天被请求的最多的查询的集合等 等。大多数这样的数据处理运算在概念上很容易理解。然而由于输入的数据量巨大,因此要想在可接受 的时间内完成运算,只有将这些计算分布在成百上千的主机上。如何处理并行计算、如何分发数据、如 何处理错误?所有这些问题综合在一起,需要大量的代码处理,因此也使得原本简单的运算变得难以处 理。 为了解决上述复杂的问题,我们设计一个新的抽象模型,使用这个抽象模型,我们只要表述我们想要执 行的简单运算即可,而不必关心并行计算、容错、数据分布、负载均衡等复杂的细节,这些问题都被封 装在了一个库里面。设计这个抽象模型的灵感来自Lisp和许多其他函数式语言的Map和Reduce的原 语。我们意识到我们大多数的运算都包含这样的操作:在输入数据的“逻辑”记录上应用Map操作得出一 个中间key/value pair集合,然后在所有具有相同key值的value值上应用Reduce操作,从而达到合并中 间的数据,得到一个想要的结果的目的。使用MapReduce模型,再结合用户实现的Map和Reduce函 数,我们就可以非常容易的实现大规模并行化计算;通过MapReduce模型自带的“再次执行”(re- execution)功能,也提供了初级的容灾实现方案。 Google MapReduce中文版 编辑推荐 热点文章 ·理解REST软件架构 ·eBay的架构 ·如何成为一个好的系统分析员 ·什么是系统分析 ·怎样做一个优秀的系统分析师 ·优秀的系统分析师必读——需求分析20条原则 相关主题 最新文章 ·Google MapReduce中文版 ·Google的系统工程师(SA)如何工作 ·The Google File System中文版 ·无挑战,不工作之 -系统分析师招聘答案 ·五年Skype架构师之路的感言 ·深入分析IBM的云计算解决方案 PuzzleGames.alot.com Google 提供的广告 Google 提供的广告 Google Google推广 Google代理 C# Mapreduce Google优化 Google 提供的广告 Google AD Word Get on Google Google優化 Google广告 Download Google Analytics Gain traffic and optimize your site with Google Analytics. Free! www.google.com/analyticsGoogle MapReduce中文版-系统架构 http://www.kuqin.com/system-analysis/20100915/88059.html[2010-11-2 17:19:20] 这个工作(实现一个MapReduce框架模型)的主要贡献是通过简单的接口来实现自动的并行化和大规模 的分布式计算,通过使用MapReduce模型接口实现在大量普通的PC机上高性能计算。 第二部分描述基本的编程模型和一些使用案例。第三部分描述了一个经过裁剪的、适合我们的基于集群 的计算环境的MapReduce实现。第四部分描述我们认为在MapReduce编程模型中一些实用的技巧。第 五部分对于各种不同的任务,测量我们MapReduce实现的性能。第六部分揭示了在Google内部如何使 用MapReduce作为基础重写我们的索引系统产品,包括其它一些使用MapReduce的经验。第七部分讨 论相关的和未来的工作。