MapReduce是一个可用于大规模数据处理的分布式计算框架,它借助函数式编程及分而治之的设计思想,使编程人员在即使不会分布式编程的情况下,也能够轻松地编写分布式应用程序并运行在分布式系统之上。
一、MapReduce 是什么
MapReduce 最早是由 Google 公司研究提出的一种面向大规模数据处理的并行计算模型和方法。Google 设计 MapReduce 的初衷主要是为了解决其搜索引擎中大规模网页数据的并行化处理问题. 2004年,Google 发表了一篇关于分布式计算框架 MapReduce 的论文,重点介绍了 MapReduce 的基本原理和设计思想。同年,开源项目 Lucene(搜索索引程序库)和 Nutch(搜索引擎)的创始人Doug Cutting发现 MapReduce 正是其所需要的解决大规模 Web 数据处理的重要技术,模仿Google 的 MapReduce,基于 Java 设计开发了一个后来被称为 Hadoop MapReduce 的开源并行计算框架和系统。
总的来说,MapReduce是大数据进行并行处理计算模型、框架与平台。具体包含以下3层含义。
(1)MapReduce是一个并行程序的计算模型与方法。
MapReduce是一个解决大规模数据的并行计算的编程模型。这个编程模型将大数据处理过程主要拆分为Map(映射)和Reduce(化简)两个模块,提供更为简单的并行的设计模型,即使编程人员不了解分布式计算框架的内部运行机制,只要够参照的接口,可以完成海量数据的处理。
(2)MapReduce是一个并行程序运行的软件框架。
MapReduce可以自动化完成计算任务、自动分配和执行任务以及收集计算结果将数据分布式存储、数据通信、容错处理等并行计算涉及的很多系统底层的复杂细节问题都交由MapReduce软件框架统一处理,大大减少了软件开发人员的负担。
(3)MapReduce是一个基于集群的高性能并行计算平台。
Hadoop 中的 MapReduce是一个易于使用的软件框架,基于此框架编写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠的方式并行处理TB或PB级别的数据集。
二、MapReduce的优缺点
1.MapReduce的优点
在大数据和人工智能时代,MapReduce如此受欢迎主要因为它具有以下几个优点。
● MapReduce 易于编程。通过简单接口完成分布式程序的编写,可运行在众多服务器组成的集群上。即编写一个分布式程序与编写一个简单的串行程序是一模一样的。也正是易于使用的特点使得
● 良好的扩展性。出现资源不足的情况,可以直接增加机器数量来扩展集群的计算能力这与HDFS通过增加机器扩展集群存储能力的道理是一样的。
● 高容错性。高容错性提现在MapReduce能使程序能够部署在廉价商用服务器上。如果其中一台机器故障,自动切换到其他节点,而且这个过程不需要人工参与,完全在
● MapReduce 适合PB级以上海量数据的离线处理。
2.MapReduce的缺点
MapReduce 虽然具有很多优势,但也有不适用的场景,即有些场景下并不适合 MapReduce 来处理,主要表现在以下几个方面。
- 不适合实时计算。MapReduce 无法毫秒级内返回结果。MapReduct 并不适合数据的在线处理。
- 不适合进行流式计算。MapReduce设计之初输入数据集是静态的,不适合输入动态数据,不适合即流式计算。
- 不适合程序之间的依赖性,MapReduce的处理方法是将使用后每个 MapReduce 作业的输出结果写入磁盘,这样会造成大量的磁盘 IO,导致性能非常低下。
尽管但也是目前最为成功、最易于使用的大数据并行处理技术。