mapreduce是什么意思
mapreduce的意思是用于大规模数据集并行运算的一种编程模型,基于该模型能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行地处理上TB级别的海量数据集。
mapreduce是面向大数据并行处理的计算模型、框架和平台,它隐含了以下三层含义:
1)mapreduce是一个基于集群的高性能并行计算平台(Cluster Infrastructure)。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布式和并行计算集群。
2)mapreduce是一个并行计算与运行软件框架(Software Framework)。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。
3)mapreduce是一个并行程序设计模型与方法(Programming Model & Methodology)。它借助于函数式程序设计语言Lisp的设计思想,提供了一种简便的并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了抽象的操作和并行编程接口,以简单方便地完成大规模数据的编程和计算处理。
mapreduce的特点
优点
1)易于编程 mapreduce向用户提供了简单的编程接口,由框架层自动完成数据分布存储、数据通信、容错处理等复杂的底层处理细节,用户只需要使用接口实现自己的数据处理逻辑即可。
2)良好的扩展性 允许用户通过简单的增加机器来扩展它的计算能力和吞吐能力。
3)高容错性 mapreduce设计的初衷就是使程序能够部署在廉价的PC机器上,这就要求它具有很高的容错性。比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上运行,不至于这个任务运行失败,而且这个过程不需要人工参与,而完全是由 Hadoop内部完成的。
4)适合PB级以上海量数据的离线处理。
mapreduce缺点
mapreduce不擅长做实时计算、流式计算、DAG(有向图)计算。
1)实时计算。mapreduce无法像Mysql一样,在毫秒或者秒级内返回结果。
2)流式计算。流式计算的输入数据是动态的,而mapreduce的输入数据集需提前上传到HDFS,是静态的,不能动态变化。
3)DAG(有向图)计算。多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出。在这种情况下,mapreduce并不是不能做,而是使用后,每个mapreduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常的低下。