<内容摘自互联网 主要为自用学习>
概述:MapReduce是hadoop的三大核心组件之一,主要提供的是计算模型,比较典型的应用案例就词频统计
MapReduce含义
计算模型:对数据的分布式处理计算抽象为Map和Reduce两个过程,为所有的数据处理提供统一且简单的处理方式,更加非技术人员的理解
运行框架:提供了一个计算精良的并行计算软件框架,能自动完成计算任务并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行子任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算中的很多复杂细节交由系统负责处理,大大减轻了软件开发人员的
负担
MapReduce的工作流程
(详细版)
Reducet阶段
整个处理流程都不需要代码编写,直接使用即可
#1 将文件里的数据切割为一个一个的数据块,切割原则是根据系统的存储大小,默认是按128M进行切割同时考虑行
#2将切割后的数据块(split)分发到节点上,每个节点上会运行一个map对数据进行处理,因此每一个map会接受文件内的一部分数据(在map里运行一定的程序代码对数据进行处理)进行词频统计
#3所有map同时处理数据,并输出运算结果,KV键值对,(不论计算方式所有的map输出都是这种形式 )
#4map输出的结果再传输给reduce节点进行汇总,这个传输过程叫做shuffle,Shuffle是MapReduce程序的核心与精髓,Shuffle也是MapReduce被诟病最多的地方所在。MapReduce相比较于Spark、Flink计算引擎慢的原因,跟 Shuffle机制有很大的关系
#5 reduce将map输出的kv键值对按照一定规则再进行汇总,依旧处理的是部分数据,所有的reduce也是同步进行的
#6最后将reduce的结果汇总输出