MapReduce是一个典型的分布式批处理引擎,具有良好的扩展性与容错性以及高吞吐率等。
编程思想:核心思想是分而治之,即将一个分布式计算过程拆解成两个阶段,Map阶段和Reduce阶段。
MapReduce的编程组件:
1.Mapper:Mapper中封装了应用程序的数据处理逻辑,为了简化接口,MapReduce要求所有存储在底层分布式文件系统上的数据均要解释成<key,value>的形式,并以迭代方式以此交给Mapper中的map函数处理,产生另外一些<key,value>。
2、Reducer:主要作用是基于Mapper产生的结果进行汇总操作,产生最终结果。
3、InputFormat:主要用于描述输入数据的格式
数据拆分(按照某种策略分成若干个split,以便确定Map task个数以及对应的Split)
为Mapper提供输入数据(给定某个split,能够将其解析成一系列<key,value>对)
(1)、TextInputFormat:专为文本文件格式,按照数据量大小将输入文件或目录拆分成split,并以行为单位将split桩长一系列<key、value>对。eg:一个文件1G,默写情况下TextInputFormat将其分成1024M/128M=8个split,进而启动8个Map Task处理。
(2)、SequenceFileInputFormat:针对二进制文件格式
4、Partitioner:作用是对Mapper产生的中间结果进行分片,以便将同一组的数据交给同一个Reduce处理,它直接影响Reduce阶段的负载均衡。MapReduce默认采用HashPartitioner基于一种哈希值的分片方法,能够将相同的key交给同一个Reduce Task处理。

MapReduce是一种分布式批处理引擎,具有优秀的扩展性和容错性。它通过Map和Reduce两个阶段进行数据处理,Mapper封装应用程序逻辑,Reducer进行数据汇总。InputFormat负责数据格式描述,Partitioner进行数据分片,OutputFormat描述输出格式。Combiner作为性能优化组件,可在Map端进行局部聚集。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



