MapReduce程序开发组件说明

1、WordCount编码回顾

MapReduce编程涉及的主要组件,如下:
InputFormat类:分割成多个splits和每行怎么解析。
Mapper类:对输入的每对<key,value>生成中间结果。
Combiner类:在map端,对相同的key进行合并。
Partitioner类:在shuffle过程中,将中间结果分为N份,每一份都由一个reduce去完成。
Reducer类:对所有的map中间结果,进行汇总、聚合。
OutputFormat类:输出最终结果格式。
wordcount

2、程序运行过程简图

MapReduce程序主要分为两个阶段:Map Task和Reduce Task,开发人员只需实现map()和reduce()两个函数,即可实现分布式计算。
mapreduce

3、程序组件

3.1、第一阶段Map

3.1.1、InputFormat 主要用于描述输入数据的格式,它提供以下两个功能
数据切分:按照某个策略将输入数据切分成若干个split,以便确定 Map Task 个数以及对应的 split。
Mapper数据源:给定某个 split,能将其解析成一个个 key/value 对。
3.1.2、FileInputFormat所有基于文件的 InputFormat 实现的基类。
派生出针对文本文件格式的 TextInputFormat、 KeyValueTextInputFormat 和 NLineInputFormat;针对二进制文件格式的 SequenceFileInputFormat 等。
map

3.2、中间过程Shuffle

shuffle是执行排序、将map运算结果(key-value)传给reducer的过程,目的是保证reducer输入是按键排序的。该过程涉及的组件:分区(Partitioner)、排序(Sorter)、合并(Combiner)。
分区默认类HashPartitioner;合并Combiner是为了减轻reduce压力,故此可以与reducer保持一致。

3.3、第二阶段Reduce

OutputFormat主要用于描述输出数据的格式,它能够将用户提供的 key/value 对写入特定格式的文件中。
reduce

4、MapReduce工作原理

参见中文版:https://yq.aliyun.com/ziliao/466418

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值