一、概述
1、MapReduce介绍
实现海量数据的计算问题,一个分布式运算程序的编程框架
MapReduce核心功能是讲用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。
MapReduce:自己处理业务相关代码+自身默认代码
2、MapReduce优缺点
优点:
1、Mapreduce易于编程。用户只关心业务代码。
2、良好的扩展性。项目当你的计算资源得不到满足的时候,你可以通过简单的通过增加机器来扩展它的计算能力
3、高容错性
4、适合PB级以上海量数据的离线处理
缺点:
1、不擅长实时计算
Mapreduce无法做到像Mysql那样做到毫秒或者秒级的返回结果
2、不擅长流式计算
流式计算的输入数据是动态的,而Mapreduce的输入数据集是静态的,不能流态变化。这是Mapreduce自身的设计特点决定了数据源必须是静态的。
擅长流式计算的:Sparkstreaming、flink
3、不擅长DAG(有向图)计算
多个应用程序存在依赖关系,后一个应用程序的输入为前一个应用程序的输出,在这种情况下,Mapreduce并不是不能做,而是使用后每个Mapreduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常低下。
擅长迭代运算:Spark 基于内存
3、 MapReduce核心编程思想
MAP:分发
Reduce:汇总
一、分而治之
MapReduce思想在生活中处处可见。或多或少都曾接触过这种思想。MapReduce的思想核心是“分而治之”,适用于大量复杂的任务处理场景(大规模数据处理场景)。
二、Map
Map负责“分”,即把复杂的任务分解为若干个“简单的任务”来并行处理。可以进行拆分的前提是这些小任务可以并行计算,彼此间几乎没有依赖关系
二、Reduec
Reduce负责“合”,即对map阶段的结果进行全局汇总
