赞
踩
MapReduce编程涉及的主要组件,如下:
InputFormat类:分割成多个splits和每行怎么解析。
Mapper类:对输入的每对<key,value>生成中间结果。
Combiner类:在map端,对相同的key进行合并。
Partitioner类:在shuffle过程中,将中间结果分为N份,每一份都由一个reduce去完成。
Reducer类:对所有的map中间结果,进行汇总、聚合。
OutputFormat类:输出最终结果格式。
MapReduce程序主要分为两个阶段:Map Task和Reduce Task,开发人员只需实现map()和reduce()两个函数,即可实现分布式计算。
3.1.1、InputFormat 主要用于描述输入数据的格式,它提供以下两个功能
数据切分:按照某个策略将输入数据切分成若干个split,以便确定 Map Task 个数以及对应的 split。
Mapper数据源:给定某个 split,能将其解析成一个个 key/value 对。
3.1.2、FileInputFormat所有基于文件的 InputFormat 实现的基类。
派生出针对文本文件格式的 TextInputFormat、 KeyValueTextInputFormat 和 NLineInputFormat;针对二进制文件格式的 SequenceFileInputFormat 等。
shuffle是执行排序、将map运算结果(key-value)传给reducer的过程,目的是保证reducer输入是按键排序的。该过程涉及的组件:分区(Partitioner)、排序(Sorter)、合并(Combiner)。
分区默认类HashPartitioner;合并Combiner是为了减轻reduce压力,故此可以与reducer保持一致。
OutputFormat主要用于描述输出数据的格式,它能够将用户提供的 key/value 对写入特定格式的文件中。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。