MapReduce概述
一:MapReduce定义
MapReduce是一个分布式运算程序的编程框架,是用户开发"基于Hadoop的数据分析应用"的核心框架。
它的核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并运行在Hadoop集群上。
二:MapReduce优缺点
1:优点
(1)它易于编程。它简单的实现一些接口,就可以完成一个分布式程序,可以发布到大量廉价的pc机器上运行。
(2)良好的扩展性。可以通过增加机器来扩展它的计算能力。
(3)高容错性。比如其中一台机器挂了,它能把上面的计算任务转移到另一台机器上,继续任务运行。并且全程自动完成,无需人工参与。
(4)适合PB级以上的海量数据的离线处理。
2:缺点
(1)不擅长实时计算。无法像Mysql一样,在毫秒或秒级内返回结果。
(2)不擅长流式计算。MapReduce自身的设计特点决定了数据源必须是静态的。
(3)不擅长DAG(有向图)计算。每个MapReduce作业的输出结果都会写入磁盘,如果进行DAG计算的话,会造成大量的磁盘IO,导致性能低下。
三:MapReduce执行流程
四:序列化
MapReduce的执行需要在磁盘上进行读写操作,所以hadoop有自己的序列化。java的序列化太庞大,不适合。