Hadoop?MapReduce是一个软件框架,基于该框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行地处理上TB级别的海量数据集。这个定义里面有着这些关键词,一是软件框架,二是并行处理,三是可靠且容错,四是大规模集群,五是海量数据集
因此,对于MapReduce,可以简洁地认为,它是一个软件框架,海量数据是它的“菜”,它在大规模集群上以一种可靠且容错的方式并行地“烹饪这道菜”。
MapReduce核心函数:
MapReduce之策略:
MapReduce之理念:
计算向数据靠拢而不是数据向计算靠拢
要完成一次数据分析时,选择一个计算节点,把运行数据分析的程序放在计算节点上运行
然后把它所涉及的数据,全部从各个不同节点上面拉过来,传输到计算发生的地方
1.工作流程
2.各个执行的阶段
1.从HDFS里加载文件读取文件-(IputFormat)对输入进行格式验证,然后,将输入文件切分为逻辑上的多个(IputSplit)实际是逻辑切分概念,只是记录了要处理的数据的位置和长度。
2.RR根据InputSplit中的信息来处理InputSplit中的具体记录,加载数据并转换为适合Map任务读取的键值对,输入给Map任务。
3.中间结果shuffle(洗牌),分区,排序,合并,归并,从无序<key,value>到有序的<key,value-list>
4.Reduce 执行用户定义的逻辑,输出结果给到OutputFormat模块
5.OutputFormat模块会验证输出目录是否已经存在以及输出结果类型是否符合配置文件中的配置类型,如果都满足,就输出Reduce的结果到分布式文件系统(如HDFS)。
3.MapReduce核心环节-Shuffle过程
所谓Shuffle,是指对Map输出结果进行分区、排序、合并等处理并交给Reduce的过程。因此,Shuffle过程分为Map端的操作和Reduce端的操作,主要执行以下操作。
a输入数据和执行Map任务
b写入缓存
c溢写(分区,排序和合并)
d文件归并
首先,需要检查WordCount程序任务是否可以采用MapReduce来实现
其次,确定MapReduce程序的设计思路
最后,确定MapReduce程序的执行过程
Map过程示意图
用户没有定义Combiner时的Reduce过程示意图
用户定义Combiner时的Reduce过程示意图