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处理。