一、MapReduce 概述
1、MapReduce 定义
MapReduce 是一个分布式运算程序的编程框架,是用户开发“基于 Hadoop 的数据分析应用”的核心框架。
MapReduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个 Hadoop 集群上。
MapReduce核心功能:分布式的离线并行计算框架,对海量数据的处理。将计算过程分为Map和Reduce两个阶段,Map阶段并行处理输入数据,Reduce阶段对Map结果进行汇总。
2、MapReduce 优缺点
1.1、优点
MapReduce 易于编程
它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的 PC 机器上运行。也就是说你写一个分布式程序,跟写一个简单的串行程序是一模一样的。就是因为这个特点使得 MapReduce 编程变得非常流行。
良好的扩展性
当一台机器算力不足时,可以通过增加机器数量的方式来提高效率
高容错性
基于Hadoop和hdfs设计的思路:认为机器总是不完全可靠的;所以当一台机器挂掉后,会自动把挂掉的机器上的任务发给其他的机器来执行,这个过程由Hadoop内部完成
适合处理海量数据
可以实现数千台服务器集群并发工作,提供处理能力
1.2、缺点
不擅长实时计算
Hadoop设计初衷就是为了处理大量数据,而大量数据不可能交由内存去快速处理查找,而且存储类型也不一定是结构化存储,处理速度不可能像Mysql一样达到毫秒级别
不擅长流式计算
流式计算的输入数据是动态的,而 MapReduce 的输入数据集是静态的,不能动态变化。
这是因为 MapReduce 自身的设计特点决定了数据源必须是静态的。
不擅长有向无环图
因为每次mapduce的结果都会写入到磁盘,造成大量IO,导致性能下降
3、MapReduce 进程
一个完整的 MapReduce 程序在分布式运行时有三类实例进程:
MrAppMaster:负责整个程序的过程调度及状态协调
MapTask:负责 Map 阶段的整个数据处理流程
ReduceTask:负责 Reduce 阶段的整个数据处理流程。