- Hadoop的主要执行(计算)框架
- 大而化小、异而化同
- 每个阶段都是用键值对作为输入和输出
- Job = Map + Reduce
- 通过map和reduce两个操作实现了并行分布式计算框架,mapreduce的中间计算结果需要存储在HDFS的磁盘中,频繁访问磁盘极大降低了数据处理的效率;Mapreduce只提供map和reduce两个操作,大量的操作需要开发者重写代码来实现,实现成本较高
PC机分为三类:
- Master(负责调度,相当于工地的工头)
- Worker(相当于干活的工人)
- Mapper(处理任务)
- Reducer(汇总工作)
举例来说,统计一系列文档中的词频。文档数量规模很大,有1000万个文档,英文单词的总数可能只有3000(常用的)。
那么input M=10000000,output N=3000。于是,我们搞了10000个PC做Mapper,100个PC做Reducer。每个Mapper做1000个文档的词频统计,统计之后把凡是和同一个word相关的统计中间结果传给同一个Reducer做汇总。比如某个Reducer负责词表中前30个词的词频统计,遍历10000个PC,这10000个Mapper PC把各自处理后和词表中前30个词汇相关的中间结果都传给这个Reducer做最终的处理分析。
缺陷:
第一,一个Map Reduce任务只有Map和Reduce两个阶段,复杂的计算需要大量的Job共同完成,Job之间的依赖关系需要由开发者自己管理,这增加了开发者的研发难度。
第二,Hadoop在进行Map Reduce计算的过程中,会将map的计算结果写入到本地磁盘或Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)上,然后再通过shuffle过程将计算结果发送到reduce上进行处理,反复的磁盘读写使Hadoop不能够满
足低延迟的交互式数据挖掘任务的要求。
第三,时间延迟高,Reduce Task需要等待所有Map Task都完成后才可以开始