MapReduce的概述
定义:MapReduce是一个分布式运算程序的编程框架,是用户“基于Hadoop的数据分析应用”的核心框架。MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合一个完整的分布式运算程序,并运行在一个Hadoop集群上
优点:1.MapReduce易于编程。他简单的实现一些接口,就可以完成一个分布式程序
2.良好的扩展性。计算资源不满足时可以通过简单的增加机器来扩展
3.高容错性。一台机器挂了,它可以把上面的计算任务转移另一个节点上运行,不至于这个任务运行失败
4.适合PB级以上海量数据的离线处理
缺点:1.不擅长实时计算
2.不擅长流式计算(流式计算的输入数据是动态的,而MapReduce输入数据是静态的,所以数据源必须是静态的)
3.不擅长DAG(有向图)计算。多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出。在这种情况下,MapReduce并不是不能做,而是使用后,每个MapReduce作业的输出结果都会写入磁盘,会造成大量的数据IO,导致性能非常的低下
MapReduce的核心思想:
1.分布式的运算程序往往需要分成至少2个阶段(Map阶段和Reduce阶段)
2.Map阶段的并发MapTask,完全并行运行,互不相干
3.Reduce阶段的并发ReduceTask,完全互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出
4.MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务逻辑非常复杂,那只能多个MapReduce程序,串行运行